对事务和两阶段提交的支持
在 COM 术语中,事务始终是原子、一致、独立且持久的工作单元, (ACID) 。 在大型机术语中,事务可能是 ACID 事务,也可能不是 ACID 事务;在大型机术语中,事务是事务程序中的一组操作或命令, (TP) 。 术语上的这种差异可能会令人困惑。 在 TI 管理器和 TI Designer中使用的单词 transaction 始终引用 ACID 事务。
两阶段提交 (2PC) 是一种协议,允许将一组应用程序 (或跨应用程序) 操作或命令全部回滚或全部提交为单个事务单元。
注意
如果通过 TCP/IP 协议调用 TI 自动化服务器,则不支持两阶段提交事务。 两阶段提交仅适用于 SNA APPC/LU 6.2 协议。
TI 组件有四个可能的事务属性:
需要事务
需要新事务
支持事务
不支持事务
前两个选项要求大型机 TP 是事务 (即满足 ACID 属性) 并支持同步级别 2。 如果大型机 TP 是 CICS Link 或 IMS 版本 6.0 或更高版本程序,则这是透明的。 第三种选择要求大型机 TP 支持同步级别 2 请求并正确处理事务语义。 对于 IMS 版本 6.0 之前的 IMS TP 以及仅支持同步级别 0 或同步级别 1 的任何 CICS TP,需要第四个选项。
如果在 COM+ 事务的范围内调用 TI 组件,则 TI 将与 CICS 建立同步级别 2 会话 (否则,将使用同步级别 0) 。 这对 TI 组件的客户端是透明的。 如果大型机 TP 是 CICS Link 程序,则会话的事务性质对 TP 也是透明的,因为 IBM 在 CICS 中的镜像事务 (CSMI) 处理同步级别 2 协议,并且它所链接的 TP 不知道使用的是同步级别 0 还是同步级别 2。
TI 在客户端完成每个方法调用的操作时,通过调用 SetComplete 或 SetAbort 来符合 COM+ 编程模型。 如果未检测到错误,TI 将调用 SetComplete;否则,它将调用 SetAbort。 如果大型机 TP 指示事务不应通过设置返回的元数据错误块中的 DisableCommit 标志来提交事务,TI 还会调用 SetAbort。 如果 TI 自动化客户端应用程序确定存在应禁止提交事务的应用程序级别问题,还可以选择调用 SetAbort。
当客户端的方法调用返回时,大型机上的 TP 已执行一些工作单元,但尚未提交对 CICS 中受保护资源的任何更改。 TI 使用新的 DTC 接口在 DTC 事务上登记同步级别 2 会话。 当 DTC 准备好提交或中止事务时,它会与 TI 通信,以在 LU 6.2 会话上驱动适当的两阶段提交流。 同样,TI 代表客户端以透明方式执行所有 2PC 工作。
尽管可以在方法完成时停用 TI 对象,但必须保持会话,直到事务提交或中止。 如果用户的应用程序代码进行一个或多个事务方法调用,但长时间不提交事务,则可能会对性能产生负面影响并占用系统资源。 结构不佳的用户代码可以快速使用对话。
当会话正在等待提交时,它将与其关联的对象分离。 TI 管理这些“等待”会话的池,并在从 DTC 收到相应的通知时执行所需的同步级别操作。 如果可能,TI 会重复使用这些对话,以最大程度地减少开销。
TI 还 (SNA LU 6.2 Resync TP) 提供重新同步服务。 此 Windows 服务配置为 SNA 定义的 Resync TP (0x06f2) 自动启动的可调用服务。 Resync 服务实现 SNA 事务管理器的“Exchange 日志名称”和“比较状态”函数。 它允许 DTC (分布式事务处理协调器) 和 CICS 在系统启动期间或系统或通信故障后根据需要启动恢复过程。
有关 IBM 的 SNA SyncPoint 或 2PC 流的信息, SNA SyncPoint Services 体系结构参考 (IBM SC31-8134-00) 。 所有 TI 2PC 流都按照此体系结构实现。
注意
有关如何使用 CICS 链接使用显式 SYNCPOINT 命令的TP 的信息,请参阅 具有显式 SYNCPOINT 命令的 TP。
总之,若要使用两阶段提交,必须满足以下所有要求:
本地和远程 LU 必须在 Host Integration Server 节点中启用 SyncPoint 支持。
本地和远程 LU 应分别指向运行 Resync 服务的计算机。
(RE) 的远程环境必须启用同步级别 2 支持。 若要检查此问题,请在 TI 管理器中右键单击 RE,单击“属性”,然后单击“LU 6.2”选项卡。
TI 组件必须将事务支持设置为 Supported、Required 或 Requires New。 若要检查此设置,请在 TI 管理器中右键单击 TI 组件,单击“属性”,然后单击“事务”选项卡。
必须为远程主机配置同步级别 2 支持。