首页 > 应用开发 > Java > 读书笔记Head first EJB (2)
今天就记一下EJB中最重要的部分:三个bean。
开头:三个bean都要实现各自的接口,消息驱动除了要实现MessageDrivenBean接口外,还要实现MessageListener接口。会话及实体bean都有相应的home及组件接口,而消息驱动则没有。因为消息驱动bean没有客户。
会话bean:分为两种,一是有状态,一是无状态。有状态bean存在钝化和激活,而无状态没有。因为无状态不知道自己的客户是谁,没有必要保留客户信息,当完成自己的使命后,就回到了池中,而有状态bean保留客户信息,但如果客户长期没有调用bean的业务方法,bean在容器中将大大影响效率,于是就有了钝化和激活。在ejbPassivate()完成时,每个非临时实例变量都必须是可串行化的或基本类型,或者null,再或者是容器必须处理的某个特殊东西的引用。
有状态与无状态会话bean的创建过程也有很大区别。先谈谈有状态的。
1,客户在home上调用创建方法。
2,容器建立EJB对象和SessionContext。
3,容器构造bean实例。
4,容器把bean与它的上下文和EJB对象连接起来(调用setSessionContext() 和 ejbCreate() )。
5,容器向客户发送EJB对象的一个桩。
接下来是无状态的,无状态的会话bean创建与客户无关。无状态的创建与客户调用创建方法脱离了。当客户调用home上的创建方法时,容器要做的只是从池中拉出一个bean,将它与客户的EJB对象连接。当调用完bean上的业务方法后,容器把这个bean发回池中。
[@more@]来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/789181/viewspace-889066/ ,如需转载,请注明出处,否则将追究法律责任。