衡量Apache Geronimo EJB事件选项,第2部份: Bean管理事件[Java编程]
本文“衡量Apache Geronimo EJB事件选项,第2部份: Bean管理事件[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
既然您已经在 第 1 部份 学习了有关 Enterprise JavaBeans (EJB) 容器管理的事件的全部细节,那么您大概对 EJB bean 管理的事件以及如安在 Apache Geronimo 利用服务器中实现它感到好奇.在由三部份构成的 系列文章 的这一期文章(第 2 部份)中,您可以得到全部细节.
简介
本系列分为三部份,将摸索 Geronimo 和 OpenEJB 可认为您供应什么帮忙,以及在 EJB 2.1 中目前可以实现的 EJB 事件概念(让您顺利进入 EJB 3.0).第 2 部份(即本文)将具体描写 EJB bean 管理的事件,研究可以生成的两种 bean 管理的事件(Java Transaction API (JTA) 和 Java Database Connectivity (JDBC) 事件)的用法.您将理解这些事件的回滚和如安在 Geronimo 中利用 bean 管理的事件.
目前扼要回想一下第 1 部份中涵盖的内容:利用 EJB 事件,您可以从下列两个选项中举行挑选:
您可以将事件实现拜托给 EJB 容器.这就是容器管理的事件,也是本系列文章第 1 部份的核心.请参阅 第 1 部份,得到对事件和容器管理的事件的简介.
在提交事件和将其回滚时,答应通过编程方法管理企业 bean.利用程序开辟人员必须明确将事件逻辑编入企业 bean 代码来实现它.这就是 bean 管理的事件,是本系列的第 2 部份(也就是本文)的核心.
在第 3 部份中,您将理解与容器管理的事件和 bean 管理的事件有关的难题和附加特点.
bean 管理的事件
与 bean 管理的事件相对比,容器管理的事件更简单且代码更少.但是在利用容器管理的事件时存在以下情形:您的企业 bean 办法既可以参与到事件中,也可以不参与.假如您需求更大概的逻辑,并在基于特定有效性逻辑的情形下利用大概逻辑提交事件或回滚事件,那么您应当利用 bean 管理的事件.bean 管理的事件可以使您对事件边界举行全面掌握.
会话 bean 或消息驱动 bean (MDB) 可以利用 bean 管理的事件.实体 bean 不能利用 bean 管理的事件.这是因为 EJB 容器掌握了加载或存储实体 bean 的数据的时间.
在 bean 管理的事件中,容器必须答应 bean 实例在一个办法中持续履行几个事件,但是要记着,不能履行嵌套事件.假如您试图启动一个新事件而 bean 实例还没有提交前一个事件,那么容器将抛出一个非常.
您可以利用两种范例的 bean 管理的事件:
JTA 事件
JDBC 事件
我们将在下一节中查看这两种事件.
JTA 事件
JTA 是事件管理器和分布式事件处理系统所触及的其他组件之间的一个接口标准.通过利用接口,没必要利用事件管理器的特有 API 便可以单独地划分事件.
全部 EJB 容器都必须支持 JTA API.关于一名开辟人员,这答应您将事件指令传达给 EJB 容器,并以通用、简单的方法供应事件指令.此办法使您没必要耽忧事件服务的底层工作.
javax.transaction.UserTransaction
利用 bean 管理的 JTA 事件时,可以利用 javax.transaction.UserTransaction 接口来划分事件.在该接口上,有三个风趣的办法:
begin() —— 成立一个新的事件,并将该事件与当前线程关联起来.
commit() —— 提交与当前线程有关联的事件.
rollback() —— 强行回滚与当前线程有关联的事件.
在 begin() 和 commit() 之间发生的全部更新都是在一个事件中完成的.
UserTransaction 接口上的其他办法包含:
getStatus() —— 检索与当前线程有关的事件的状况.返回值是 javax.transaction.Status 接口上定义的常数.
setRollbackOnly() —— 强行使事件终止.
setTransactionTimeout(int) —— 设置事件中止前能运行的最大次数.这在避免死锁时很有效.
请参阅本文的 参考资料 部份,得到 Sun 公司的 JavaDocs 中有关 UserTransaction 和 UserStatus 接口的链接.
若何利用 bean 办法得到 UserTransaction 的最初引用呢?基于企业 bean 的范例,您可从 bean 上下文中得到接口:
关于会话 bean,可从 javax.ejb.EJBContext 调用 getUserTransaction().
关于 MDB,可从 MessageDrivenContext.getUserTransaction() 调用 getUserTransaction().
以上是“衡量Apache Geronimo EJB事件选项,第2部份: Bean管理事件[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |