参考资料:
http://jonas.ow2.org/JONAS_5_2_0_M2/doc/doc-en/pdf/ejb2_programmer_guide.pdf
先看了EJB3再看的EJB2,就SessionBean来说,EJB2比EJB3要复杂很多,
EJB3只需要一个接口和实现类,通过注解,然后lookup接口就可以了,但在EJB2中
一个 SessionBean由三个部份组成:
1.Home接口
有一个create方法,用于create 2 中的 EJBObject
用于生成 EJBObject
2.EJBObject 接口
用于定义业务逻辑
3.一个实现 ejb SessioBean 接口的实现类,
SessonBean 接口方法:
ejbCreate,ejbRemove,ejbPassivate,ejbActivate
加上在 2 中申明的业务方法.
SessionBean 写好后还需要在ejb-jar.xml 中进行配置
配置的内容为SessionBean 的配置与事务的配置
home接口,远程,本地接口,实现类的配置
例如:
<enterprise-beans>
<session>
<display-name>exampleSB</display-name>
<ejb-name>Example</ejb-name>
<home>com.jtkj.ejb2.ExampleRemoteHome</home>
<remote>com.jtkj.ejb2.ExampleRemote</remote>
<local-home>com.jtkj.ejb2.ExampleLocalHome</local-home>
<local>com.jtkj.ejb2.ExampleLocal</local>
<ejb-class>com.jtkj.ejb2.Example</ejb-class>
<session-type>Stateless</session-type>
<!--容器管理事务-->
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>example</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
在ejb-jar.xml 中配置了后还需要在jboss.xml中配置
SessionBean的JNDI 地址
例如:
<jboss>
<enterprise-beans>
<session>
<ejb-name>Example</ejb-name>
<jndi-name>ejb/Example</jndi-name>
<local-jndi-name>Example</local-jndi-name>
</session>
</enterprise-beans>
</jboss>
在远程调用时:
用JNDI Lookup到 一个Home接口的代理类,
Home接口,然后调用home接口的create方法产生一个
远程接口,然后用该接口执行相定义的业务方法.
和EJB3相比,EJB2多了SessionBean的配置,和一个Home接口
在客户端调用sessionBean时需要导入服务端定义的home接口与远程接口,
还需要导入Jboss客户端 jar包,
下面是在NetBean6.8下的一个ejb2例子