在 J2EE 体系结构中,分布式事务称为全局事务,管理可恢复资源的系统称为资源
管理器,示例有 CICS、IMS™
和 DB2®。这些资源管理器基于它们支持的事务分类,它们
或 者 支 持 两 阶 段 协 作 (
通 过 提 供 XAResource 接 口 ) 、 或 者 仅 支 持 单 阶 段 协 作 ( 通 过
LocalTransaction 接口)、或者为非事务管理器。
对于事务管理,资源适配器需要实现下列契约之一,这在资源适配器的部署描述符
中进行了定义(ra.xml 文件):
XA
——
事务
可以完全参与两阶段提交进程的资源适配器,该资源适配器可以影响全
局事务的结果。
LocalTransaction——可以参与资源管理器本地事务的资源适配器(在我们的示例中是
CICS 区域),但该资源适配器不具有任何两阶段提交事务功能。为便于清楚地说明,在本
文中(
以及在其他与 WebSphere 相关的出版物和论文中),我们使用术语资源管理器本地
事务 (RMLT) 来表示位于单个资源管理器本地的事务。
NoTransaction——指无事务属性的资源适配器;它可以参与事务上下文,但不受事务
结果的影响(也不影响事务的结果)。
WebSphere Application Server 事务支持为事务中任何数量的具有两阶段功能(XA 事务)
的资源管理器提供协作。它还允许在事务中没有任何其他资源管理器的情况下使用一个具
有单阶段功能的(本地事务)资源管理器。
两阶段提交
分布式事务处理的基本部分是两阶段提交进程。这是流的体系结构集,用于确保无
论发生什么故障,事务中的所有资源管理器都能够可靠地协作。两阶段提交由所 有事务
协议实现,并且基本概念在本质上是相同的。以下描述根据 XA 规范总结了流;其他协议
(
如 CICS
或 LU6.2)可能对流使用不同的术语和变体。(
有关 CICS 同步点流的进一步详细
信息,请参阅《CICS Intercommunication Guide》,SC34-6243
,第 2 “
章 Recovery and restart
in interconnected systems”。)
“
”
在两阶段提交进程之前,事务过程中执行的所有工作都被认为是 在处理中 ,并且
在此期间如果失败将会导致工作回滚。只有在事务管理器启动两阶段提交进程时,更新才
会变得确定。
图 2. 两阶段提交