从 z/OS 批处理作业运行 XA/JTA 事务

Posted

技术标签:

【中文标题】从 z/OS 批处理作业运行 XA/JTA 事务【英文标题】:running XA/JTA transactions from z/OS batch jobs 【发布时间】:2015-01-13 17:35:53 【问题描述】:

使用JZOS启动器批量执行java程序。

用于 JDBC 的 DB2 驱动程序支持 XA 事务,但似乎只有当进程在“事务管理器”的控制下运行时才能使用它们(运行 WebSphere/CICS 进程时会发生什么)

有没有办法批量使用这种交易?

目标是在单个提交/回滚中混合 DB2/Oracle 插入/更新

【问题讨论】:

【参考方案1】:

ibm 站点提供了an example(参见图 3 - 使用 JTA 的分布式事务示例),其中包含事务管理逻辑

这似乎只有在使用类型 4(远程)连接到 DB2 时才有可能

【讨论】:

【参考方案2】:

SimpleJTA 是一个可以直接用于解决问题或作为有目的封装的参考的项目:

SimpleJTA 实现了一个独立的符合 JTA 的事务 经理。它主要设计为在没有 J2EE 服务器时使用 例如,在 Servlet 应用程序或独立 Java 中可用 程序。

但它应该适应/配置为使用 DB2

SimpleJTA 正在使用 Oracle 9i 和 Apache 进行开发和测试 Derby 数据库管理系统。添加支持相当容易 对于其他支持 XA 接口的数据库系统。

【讨论】:

【参考方案3】:

一个更复杂的问题是使用到 DB2 的类型 2(本机/DLL)连接来完成这项工作,因为它不支持分布式事务。如果您想在分布式事务中集成来自 JNI 调用的 COBOL 程序的更新,这可能是必要的

也许可以构建类似于 WebSphere 的last participant support extension 的解决方案:

最后参与者支持是对事务服务的扩展 允许单个单阶段资源参与两阶段 与一个或多个两阶段资源的交易。

【讨论】:

以上是关于从 z/OS 批处理作业运行 XA/JTA 事务的主要内容,如果未能解决你的问题,请参考以下文章

如何在 z/OS 上将 java 作为作业步骤运行

如何验证使用 FTP 提交到 z/OS 的作业是不是已完成?

z/OS 如何调用 Web 服务? [关闭]

带有悲观锁的过程中的Spring JPA事务提交

DB2 Z/OS V10 大型机:如何创建作业 [关闭]

大型机:如何防止批处理作业和 CICS 事务之间的 DB2 争用?