快速业务通道

权衡Apache Geronimo EJB事务选项,第1部分: 容器管理事务 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
义在接口上的下列方法:

afterBegin() —— 在新事务启动之后但在调用业务方法之前通知会话 bean。在事务提交之前,bean 实例可以做任何它所需要的数据库读取操作。在缓冲事务所需要的数据时,这很有用。

beforeCompletion() —— 在业务方法完成之后但是在事务提交之前通知会话 bean。如果有任何缓冲数据,可以将其更新到数据库中。bean 还可以在会话上下文中通过调用 setRollBackOnly() 执行事务的手动回滚。

afterCompletion(boolean committed) —— 在事务提交之后通知会话 bean。提交的布尔值指出是提交事务还是中止事务。如果该值为 true,则事务成功获得提交。如果该值为 false,则事务中止。因此,bean 的对话状态/实例变量可以被恢复或重新设置。

避免使用的方法

既然 EJB 容器是负责控制事务边界,那么您不应该调用任何可能干涉容器边界划分的方法。如果您正在实现容器管理的事务,请确保企业 bean 方法不会调用下列方法:

java.sql.Connection 的 commit、setAutoCommit 和 rollback 方法

javax.ejb.EJBContext 的 getUserTransaction 方法

javax.transaction.UserTransaction 的任何方法

回滚

在某些情况下您可能需要明确中止事务。有两种回滚容器管理的事务的方式:

让容器自动回滚事务。如果有任何企业 bean 抛出的运行时异常,就会发生这种回滚。

调用 EJBContext 接口的 setRollBackOnly() 方法。在发生回滚时,允许您进行控制。或许由于一些有效性验证失败或存在数据完整性问题,您可能需要回滚整个事务并抛出一个应用程序异常。应用程序异常不会自动导致容器回滚一个异常。

结束语

在本系列的第 1 部分,简单介绍了事务和 EJB 事务的两个选择。您可以看到容器管理的事务如何使您专注于您的企业 bean 的业务逻辑,而将事务逻辑和管理的复杂性留给 EJB 容器。

使用容器管理的事务,您只需要关心企业 bean 如何参与到事务中,并通过 EJB 部署描述符的简单配置来实现这一点。Geronimo 应用服务器、OpenEJB 和 XDoclet 将帮助您简化如何指定容器管理的设置,并将您从繁重的 EJB 工件编码工作中解放出来。

继续关注本系列的第 2 部分,您将了解 bean 管理的事务,在第 3 部分中,我们会将二者综合使用。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号