频 道 直 达 - 新闻 - 培训 - 软件 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 读书 - 博客 - BBS
51CTO.COM_中国最大的网络技术网站
找资料:

4.3.3 激活和挂起回调

作者: 斯瑞格奈斯/罗时飞编译 出处:电子工业出版社  (  ) 砖  (  ) 好  评论 ( ) 条  进入论坛
更新时间:2007-04-25 17:14
关 键 词:激活  挂起  回调  EJB  精通EJB 3.0
阅读提示:会话Bean能够完成客户所要求的业务操作,它是含有业务逻辑的可重用组件,并能够用于业务过程。比如,会话Bean能够完成查价、订单登记、视频压缩、银行事务、股票交易、数据库操作、复杂计算等。开始深入研究会话Bean的各个特性吧!其后,本章将开发一个有状态会话Bean组件实例。

EJB容器在挂起和激活EJB实例期间到底做了些什么工作呢?当容器将EJB实例挂起时,它需要将实例的会话状态写入到二级存储源(Secondary Storage)中,比如文件或者RDBMS中。通过调用EJB实例的可选@PrePassivate回调方法,容器能够完成实例的挂起工作。在方法级使用@PrePassivate注释后,这一方法便成为了回调接口。注意,对于EJB实例而言,一旦EJB容器调用了它的@PrePassivate回调方法,则意味着该EJB实例持有的会话状态需要交换到其他地方。

这对于容器而言很重要。因为借助于@PrePassivate回调方法能够告知EJB实例:EJB容器需要挂起它,这使得释放其持有的资源成为可能。比如,EJB实例可能持有的资源有:RDBMS连接、已打开的Socket和文件、其他任何资源(这类资源可能不是存储到磁盘中,或者不是透明地借助于Java对象序列化来完成会话状态的保存)。EJB容器对@PrePassivate回调方法的调用,使得EJB实例有机会释放其持有的资源或者完成所需的其他操作。注意,一旦执行完@PrePassivate回调方法,则意味着Bean实例已准备好让EJB容器来挂起它,下面给出了代码片断。

@Stateful
public class MyBean {

@PrePassivate
public void passivate() {
<关闭Socket连接等>
}

...
}

图4-2展示了整个挂起过程。在实际场合中,有状态会话Bean的挂起过程同图4-2显示的过程并无区别。客户调用了Bean实例中的某个方法,而当时在内存中暂时找不到该Bean实例。与此同时,EJB容器持有的企业Bean实例的个数已经到达了设定的上限。因此,在处理客户请求前,容器需要挂起最近未使用的Bean实例。在挂起它后,容器才能够获得所需的Bean实例。

图4-2  挂起有状态会话Bean

激活过程刚好同上述过程相反。已完成序列化的会话状态将再次从二级存储源中读取到内存中,借助于Java对象序列化操作或者其他操作类型能够重新构建内存状态(会话状态)。然后,容器需要调用EJB实例可能提供的@PostActivate回调方法,此时,开发者有机会在@PostActivate回调方法中恢复在调用@PreDestroy回调方法期间释放的资源。实例代码如下。

@Stateful
public class MyBean {

@PostActivate
public void activate() {
<打开Socket连接等>
}

...
}

图4-3给出了激活有状态会话Bean的示意图,它给出了典型的、just-in-time风格的激活过程介绍。图4-3中演示了客户调用Bean实例中的方法,而对应的有状态会话Bean实例已经被挂起。

图4-3  激活有状态会话Bean

上面给出的代码片断都是摘自定义在Bean类中的相应方法。开发者可以在本章“Count EJB组件的拦截器”一节内容看到单独的回调监听器类实例。

除非需要在EJB组件中打开资源(比如,Socket连接、数据库连接),否则不用提供注释了@PrePassivate和@PostActivate回调的方法。在挂起或激活Bean实例期间,这类资源需要重新构建或销毁。

生命周期回调方法应遵循如下规则。

◆对于直接定义在Bean类中的回调,其格式应该是public void <METHOD()>。
◆对于为Bean类单独提供(单个或多个)回调监听器类(拦截器)而言,其格式是public void <METHOD(InvocationContext ctx)>。javax.interceptor.InvocationContext提供了调用上下文信息。
◆不能够抛出应用异常,但可以抛出运行期异常。如果在事务中抛出了运行期异常,事务将回滚。
◆不能够为回调监听器类实施依赖注入。

【责任编辑:火凤凰 TEL:(010)68476606-8007】

回书目   上一节   下一节
发表
查看
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 最 大 的 网 络 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
名称:Vista精品应用黄皮书
简介:《Vista精品应用黄皮书》囊括了Vista的各方面内容。此次的精简版,是将里面的内容做了提取,便于用户下载和使用。内容包含了各种Vista的安装与实施、技巧与解析以及各种Vista相关学习文档和相关软件的安全下载。该电子书是了解和应用Vista人员必备的工具手册,并且也是第一本
名称:2006中国IT论坛精品集合
简介:本书由“51CTO论坛推广联盟”制作完成。书中所有内容均来自各联盟成员的论坛(网站)。制作本书的目的是为了集中大家的优势资源,将更多更精彩的内容带给广大技术爱好者。本书是联盟成立以来制作的第一本书。
关键字阅读
频道精选
主编信箱 热线:010-66476606 告诉我们您想看的:专题 文章
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 意见反馈 | 网站地图
Copyright©2005-2007 51CTO.COM 版权所有