【问题标题】:E WTRN0063E: An illegal attempt to commit a one phase capable resource with existing two phase capable resources has occurredE WTRN0063E: 已发生非法尝试使用现有的两阶段资源提交单阶段资源
【发布时间】: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


【解决方案1】:

听起来您需要将数据源配置为在 WebSphere 端支持 XA。默认情况下,WAS 数据源不会实现 javax.sql.XADataSource。

请参阅此 WAS 8.5 文档链接(第 8.e 节)以验证您的配置是否使用 XA 数据源: http://www-01.ibm.com/support/knowledgecenter/SSEQTP_8.5.5/com.ibm.websphere.base.doc/ae/tdat_ccrtpds.html?cp=SSEQTP_8.5.5%2F1-3-0-23-3-0-7-1

【讨论】:

  • 我找不到 mysql 数据库的数据存储助手。例如。我正在为 Oracle com.ibm.websphere.rsadapter.Oracle11gDataStoreHelper 使用以下一个
  • @Chava 您必须定义一个自定义 JDBC 提供程序。观看此视频进行演练(相关信息可能跳至 2:00):youtube.com/watch?v=bnTZ83VKPvU
  • 我已经使用 com.mysql.jdbc.jdbc2.optional.MysqlXADataSource 定义了自定义 JDBC Provider
猜你喜欢
  • 2011-10-13
  • 2015-11-20
  • 1970-01-01
  • 2011-11-15
  • 1970-01-01
  • 2018-04-16
  • 2011-11-24
  • 2013-05-21
相关资源
最近更新 更多