采用eclipse+jboss开发ejb3.0学习笔记

 

1     Properties properties = new Properties();

       properties.put("java.naming.factory.initial",

                       "org.jnp.interfaces.NamingContextFactory");

       properties.put("java.naming.factory.url.pkgs",

                       "org.jboss.naming:org.jnp.interfaces");

       properties.put("java.naming.provider.url", "jnp://localhost:1099");

       properties.put("jnp.disableDiscovery", "true");

 

         

      InitialContext ctx = new InitialContext(properties);

注意:初始化InitialContext时必须加上其上一个属性。

 

2.

实现类的命名规则是:接口+Bean ,如: HelloWorldBean

 

3.JNDI的组成规则是“上层名称/下层名称”,每层之间以”/”分隔,

http://localhost:8080/jmx-console点击“service=JNDIView 然后点java.lang.String list()  下的“invoke”按钮就会出现

 

 

这就是所谓的上下层名称。

 

 

其他一些命名规则:

 

 

 

4

 Stateless Session Bean不负责记录使用者状态,Stateless Session Bean 一旦实例化就被加进会话池中,各个用户都可以用。即使用户已经消亡,Stateless Session Bean的生命期也不一定结束,它可能依然存在于会话池中,供其他用户调用。如果它有自己的的属性(变量),那么这些变量就会受以所有调用它遥用户的影响。

 

 Stateful  Session Bean 是一个可以维持自身状态的会话Bean。每个用户都有自己的的一个实例,在用户的生存期内,Stateful Session Bean保持了用户的信息,也就是“有状态”;一旦用户灭亡(调用结束或实例结束),即每个用户最初都会得到一个初始化的Stateful Session Bean.

大家注意stateful session bean 必须实现Serializable 接口,这样EJB 容器才能在她们不再使用时序列化存储她们的状态信息.

 

5.上面介绍了JNDI的默认命名规则,有时要自定义JNDI,可以使用@LocalBinding@RemoteBinding注释

如:@RemoteBinding (jndiBinding="foshanshop/RemoteOperation")

 

Operation operation = (Operation) ctx.lookup("foshanshop/RemoteOperation");

 

6.

@Interceptors 注释指定一个或多个在外部类中定义的拦截器,如果写在类上表示对该类所有方法实旄拦截。

 

7

import com.foshanshop.ejb3.HelloWorld;

import com.foshanshop.ejb3.Injection;

 

import javax.ejb.EJB;

import javax.ejb.Remote;

import javax.ejb.Stateless;

 

@Stateless

@Remote ({Injection.class})

public class InjectionBean implements Injection {

    @EJB (beanName="HelloWorldBean")

    HelloWorld helloworld;

  

    public String SayHello() { 

        return helloworld.SayHello("注入者");

    }

}

 

@EJB注释的beanName属性指定EJB的类名(不带包名),他的另一个属性mappedName指定Bean实例的JNDI

 

7

消息驱动Bean(MDB)是设计用来专门处理基于消息请求的组件。一个MDB类必须实现MessageListener 接口。

当一个业务执行的时间很长,而执行结果无需实时向用户反馈时,很适合使用消息驱动Bean

 

@MessageDriven(activationConfig =

{

  @ActivationConfigProperty(propertyName="destinationType",

    propertyValue="javax.jms.Queue"),

  @ActivationConfigProperty(propertyName="destination",

    propertyValue="queue/foshanshop")

})

 

8.对于Entity Bean

首先,要对数据源进行配置,各数据库的数据配置模板在[Jboss安装目录]/docs/examples/jca 目录中找到,默认名称为:数据库名+ -ds.xml 。数据库的驱动类Jar包放置在[Jboss 安装目录]/server/all/lib 目录下,放置后需要启动Jboss服务器。数据源文件配置好后需要放置在[jboss安装目录]/server/config-name/deploy目录下。如:

Mysql-ds.xml

<datasources>

  <local-tx-datasource>

    <jndi-name>DefaultMySqlDS</jndi-name>

//    DefaultMySqlDS就是设置的数据源的JNDI名。 <connection-url>jdbc:mysql://localhost:3306/foshanshop?useUnicode=true&amp;characterEncoding=GBK</connection-url>

    <driver-class>com.mysql.jdbc.Driver</driver-class>

    <user-name>root</user-name>

    <password>root</password>

    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>

    <!-- should only be used on drivers after 3.22.1 with "ping" support

    <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>

    -->

    <!-- sql to call when connection is created

    <new-connection-sql>some arbitrary sql</new-connection-sql>

      -->

    <!-- sql to call on an existing pooled connection when it is obtained from pool - MySQLValidConnectionChecker is preferred for newer drivers

    <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>

      -->

 

    <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->

    <metadata>

       <type-mapping>mySQL</type-mapping>

    </metadata>

  </local-tx-datasource>

</datasources>

然后,配置persistence.xml文件,把实体类和persistence.xml文件打成Jarpersistence.xml 放在jar 文件的META-INF目录。如

<persistence>

  <persistence-unit name="foshanshop">

<jta-data-source>java:/DefaultMySqlDS</jta-data-source>

// DefaultMySqlDS就是数据库配置文件中定义的JNDI名。

    <properties>

      <property name="hibernate.hbm2ddl.auto" value="create-drop"/>

    </properties>

  </persistence-unit>

</persistence>

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值