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 恢复。