Study EJB (2)

王朝java/jsp·作者佚名  2006-02-01
窄屏简体版  字體: |||超大  

Study EJB2

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的对象池中有A、B、C三个Bean对象,请求D、E在第一次的时候容器分别分配给它们A、B对象,当D、E第二次请求的时候容器分配给它们的是C、B对象。请求F要求在容器重起以后仍旧可以调用上一次掉用的C对象,所以容器把C对象保存报数据库中,下一次请求F就可以再次调用相同的C bean了。

以上的A、C为无状态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的使用者。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航