据我了解,您正在尝试跨多个服务器 (JVM) 协调 XA 事务,这要求您的服务器配置 JTS,而 JBoss 服务器通常仅默认配置为 JTA。只是为了确保我们在这里讨论的是相同的版本,当我在启动 JBoss AS 5.1 时查看我的控制台日志时,它会报告以下 JBossTS 版本:
08:46:59,678 INFO [TransactionManagerService] JBossTS 事务
服务(JTA 版本 - 标签:JBOSSTS_4_6_1_GA_CP07)
假设这与您正在运行的版本大致相同,您应该查看此下载中可用的 JBossTS 文档中包含的所有文档:jbossts-full-4.6.1.GA.zip。具体来说,请查看标题为 JBossTS 4.6.0 服务器集成指南 的 PDF,其中将 Arjuna 事务管理器的不同个性定义为:
JBossTS 由一个事务引擎 ArjunaCore 组成,具有多个
围绕它分层的“个性”。
JBossTS JTA 提供了一个 JTA 1.1
适用于 Java Enterprise Edition 的兼容事务管理器
应用程序。事务范围仅限于单个 JVM。这是
适用于不需要事务的应用程序
JVM 之间业务方法调用的上下文传播。为了
例如,只有一个应用程序服务器的部署
使用实例或使用多个此类实例进行加载
仅平衡,它们之间没有事务通信。
JBossTS JTS 提供基于 CORBA 的分布式事务管理
可以通过 JTS 原生 API 或 JTA 驱动
接口。它适用于事务上下文的情况
必须跨越多个 JVM,例如部署在
应用程序服务器集群,或需要互操作性的地方
异构 Java 之间的事务性业务方法调用
应用程序服务器,或 Java 和遗留应用程序编写
另一种具有 CORBA 绑定的语言。
并且还断言:
对于涉及多个 JVM 的事务用例,JBossTS JTS 是
必填。
还请查看有关JBoss Messaging XA 配置 的此附带条件。确保遵循 JTA 文档中标题为 JBoss Messaging XA Recovery Configuration 的部分中概述的配置说明。
该文档对您需要做的事情提供了一个不错的总结,但是独立 JBossTS 实例的安装和配置的详细信息在标题为 JBoss Transactions 4.6.0 安装指南的文档中,而AS 5.1 发行版本身的 \docs\examples\transactions\README.txt
中的文档概述了用 JTS 服务替换 AS 5.1 JTA 事务服务
说了这么多,如果有任何方法可以使用一台服务器来实现您的解决方案,我想您会发现这是更可取的方法。
干杯。
//尼古拉斯
附:正确安装 JTS 后,控制台日志将在启动时显示如下内容:
09:41:03,558 INFO [TransactionManagerService] JBossTS 事务服务(**JTS 版本 - 标签:JBOSSTS_4_6_1_GA_CP07)**