【发布时间】:2015-09-06 23:13:00
【问题描述】:
我已经使用下面的方法为 MySQL 数据库配置了用户定义的数据源。
- WebSphere 8.5
- mysql-cluster-gpl-7.4.6
- mysql-connector-java-5.1.9-bin.jar
Provider 中的实现类:
com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
但是,对于 MySQL 数据源的跨 MySQL 和 Oracle 数据源操作的 JTA 事务,我得到以下异常。
E WTRN0063E: 提交单阶段能力的非法尝试 已出现具有现有两阶段能力资源的资源。
根据文档,MySQL 支持 XA 事务,我的驱动程序正在实现 XADatasource。
你能确认我错过了什么吗? 可能是数据源配置,它不是两阶段的事务性资源?
我也用ENGINE=INNODB创建了MySQL表。
【问题讨论】:
-
听起来您需要将数据源配置为在 WebSphere 端支持 XA。默认情况下,WAS 数据源不会实现 javax.sql.XADataSource。请参阅此链接(第 8.e 节)以验证您的配置是否使用 XA 数据源:www-01.ibm.com/support/knowledgecenter/SSEQTP_8.5.5/…
-
@aguibert 这似乎是一个合理的理由,所以我将其添加为答案。
-
添加了我的评论作为答案,以便人们将来更容易找到它
-
可能您的 Oracle 没有为 XA 配置。确保两个数据源都使用 XA 驱动程序。
-
Oracle 数据源和事务工作正常。问题在于数据源连接到 mysql。
标签: mysql transactions websphere jta xa