【问题标题】:JTA Transaction with multiple participants与多个参与者的 JTA 交易
【发布时间】:2012-11-04 16:49:47
【问题描述】:

我很难找到跨越多个资源(例如两个数据库、一个数据库和一个 JMS 队列等)的 JTA 事务的简单示例

我花了很多时间阅读这篇文章,并且有使用 JMS 队列执行 JTA 事务的工作示例,以及通过 JDBC 数据库驱动程序执行 JTA 事务的示例。我似乎找不到任何关于使 JMS 队列和 JDBC 数据库成为同一个 JTA 事务的一部分。

任何人都可以提供一个简短的示例或链接来演示如何为此目的使用 JTA API 吗?

【问题讨论】:

    标签: jdbc jms jta xa


    【解决方案1】:

    要让 JTA 事务在 JMS 和 JDBC 资源之间进行协调,需要满足以下条件:

    1. XAConnectionFactory - JNDI 中必须有一个符合 JMS XA 的连接工厂;具体使用哪一种取决于您的应用服务器/容器。
    2. XA 兼容的 JDBC 驱动 - 驱动必须是 XA,大多数数据库都提供,并且连接必须支持READ_COMMITTED 隔离级别,少了就不够了。

    除此之外,如果您使用的是应用服务器,如果您使用的是消息驱动的 bean 和符合 XA 的驱动程序,容器将自动处理事务。

    查看这些链接以获取示例:
    http://blog.inflinx.com/2010/04/08/spring-jta-jpa-jms/
    http://www.oracle.com/technetwork/java/faq-140431.html#relship_transac

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多