Study EJB (2)

来源:互联网 发布:linux nginx配置ssl 编辑:程序博客网 时间:2024/05/22 15:30

Study EJB 2

EJB的类型:

可以按照以下的特性区分它们:

1.      实现的接口

2.      同步,还是异步。

3.      是否保持状态。

4.      远程,还是本地。

1.按照接口。

会话bean. 必须实现javax.ejb.SessionBean

实体bean. 数据持久化bean必须实现javax.ejb.EntityBean.

消息bean. 这种bean处理来自消息队列的消息,必须实现javax.ejb.MessageDrivenBean.

以上三个bean都继承自EnterpriseBean.

    2.  同步bean,异步bean

实体bean和会话bean只能按同步方式调用。

消息bean,就是异步bean。只能被异步调用,它们没有本地接口而且不能被直接调用。它们被连接到一个消息队列中,当有消息要处理的时候被EJB容器调用。

3.       EJB中保持状态

EJB的对象池中有ABC三个Bean对象,请求DE在第一次的时候容器分别分配给它们AB对象,当DE第二次请求的时候容器分配给它们的是CB对象。请求F要求在容器重起以后仍旧可以调用上一次掉用的C对象,所以容器把C对象保存报数据库中,下一次请求F就可以再次调用相同的C bean了。

以上的AC为无状态bean(stateless bean)。它们不能保存状态。

B为有状态bean(stateful bean)。容器可以保证在请求的bean是相同的一个,客户可以存储有状态bean的句柄,句柄可以被串行化,以后可以调用相同的bean。但是有状态bean在容器重起后就失效了,所以它是正在的会话bean         

C为持久化bean(entity bean)。实体bean可以将它的状态保存到持久化数据存储。

4.       远程EJB与本地EJB

本地EJB是在2.0版本引进的。存在于本JVM中,所以不需要存根和骨架。

本地EJB扩展的接口不同于远程的EJB

javax.ejb.LocalEJBObject 而不是javax.ejb.EJBObject

javax.ejb.EJBLocalHome 而不是 javax.ejb.EJBHome

它不会throw java.rmi.RemoteException

修改bean的时候会影响其它bean的使用者。

原创粉丝点击