11.5. 交易生命周期概述
11.5.1. 事务生命周期 复制链接链接已复制到粘贴板!
有关 Jakarta Transactions 的更多信息,请参阅关于 Jakarta Transactions。
当资源要求参与事务时,会启动一系列事件。事务管理器(TM)是一个驻留于应用程序服务器和管理事务的过程。交易参与者是指参与交易的对象。资源是数据源、雅加达消息传递连接工厂或其他 Jakarta Connectors 连接器连接。
应用将启动新的事务。
要开始事务,应用从 Java Naming 和 Directory 界面获取类
UserTransaction实例,或者从注释获取 Jakarta Enterprise Beans 实例。UserTransaction界面包括启动、提交和回滚顶级事务的方法。新创建的事务自动与其调用线程关联。Jakarta Transactions 不支持嵌套交易,因此所有事务都是顶级事务。当调用
UserTransaction.begin()方法时,Jakarta Enterprise Beans 将启动事务。此事务的默认行为可能通过使用TransactionAttribute注解或ejb.xml描述符而受到影响。在该点之后使用的任何资源都与该事务相关联。如果加入多个资源,事务将变为 XA 事务,并在提交时参与两阶段提交协议。注意默认情况下,事务由 Jakarta 企业 Beans 中的应用容器驱动。这称为容器管理事务(CMT)。要让事务用户驱动,请将
交易管理更改为 Bean Managed Transaction(BMT)。在 BMT 中,用户可使用UserTransaction对象来管理事务。应用修改其状态。
在下一步中,应用将执行自己的工作并更改其状态,仅对占用的资源进行更改。
应用决定提交或回滚。
当应用完成更改其状态时,它将决定要提交还是回滚。它调用适当的方法,即
UserTransaction.commit()或UserTransaction.rollback()。对于 CMT,此过程会自动驱动,而对于 BMT,则必须显式调用UserTransaction的方法提交或回滚。TM 会从其记录中删除事务。
在提交或回滚完成后,TM 会清理其记录并从事务日志中删除有关事务的信息。
故障恢复
如果资源、事务参与者或应用服务器崩溃或不可用,则 交易管理器 会在解决底层故障并且资源再次可用时处理恢复。这个过程会自动进行。如需更多信息,请参阅 XA 恢复。