[原创]对于EJB的学习
1.SessionBean用于实现业务逻辑,它可以是有状态的,也可以是无状态的。每当客户端请求时,容器就会选择一个SessionBean来为客户端服务。Session Bean可以直接访问数据库,但更多时候,它会通过Entity Bean实现数据访问。
2.Entity Bean是域模型对象,用于实现O/R映射,负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个Entity Bean对象相当于新建一条记录,删除一个Entity Bean会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。
3.MessageDriven Bean是EJB2.0中引入的新的企业Bean,它基于JMS消息,只能接收客户端发送的JMS消息然后处理。MDB实际上是一个异步的无状态SessionBean,客户端调用MDB后无需等待,立刻返回,MDB将异步处理客户请求。这适合于需要异步处理请求的场合,比如订单处理,这样就能避免客户端长时间的等待一个方法调用直到返回结果。
下面主要介绍一下个人在MyEclipse+WebLogic下开发EJB的一个简单的例子:
按照上图所示配置好Weblogic后,在Myeclipse中新建一个EJB工程(命名为HelloWorld),然后右键工程名新建一个Session Bean如图所示:
在HelloWorld中添加一个hello方法,代码为:
public String hello() throws EJBException {
// rename and start putting your business logic here
return new String("HelloEJBWorld!");
}//这里需要注意的是代码 中的解释不要删除,因为XDoclot需要。
然后在Java 构建路径中添加weblogic.jar,再为工程和服务器配置XDoclot,然后运行XDoclot生成文件,最后部署EJB就行了。
其中weblogic-ejb-jar.xml的主要信息为:
<session >
<description><![CDATA[Description for HelloWorld]]></description>
<display-name>Name for HelloWorld</display-name>
<ejb-name>HelloWorld</ejb-name>
<home>com.interfaces.HelloWorldHome</home>
<remote>com.interfaces.HelloWorld</remote>
<ejb-class>com.ejb.HelloWorldSession</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
启动weblogic后
最后的运行结果为:
HelloEJBWorld!