与多个参与者的JTA交易

时间:2012-11-04 16:49:48

标签: jdbc jms jta xa

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

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

任何人都可以提供简短的示例或链接,以确定如何使用JTA API实现此目的吗?

1 个答案:

答案 0 :(得分:0)

要在JMS和JDBC资源之间进行协调的JTA事务,需要以下内容:

  1. XAConnectionFactory - JNDI中必须提供符合JMS XA的连接工厂;要使用的具体方法取决于您的应用程序服务器/容器。
  2. 符合XA标准的JDBC驱动程序 - 驱动程序必须是XA,大多数数据库都提供一个,连接必须支持READ_COMMITTED隔离级别,任何不足都不够。
  3. 除此之外,如果您使用的是app服务器,如果您使用的是消息驱动Bean和符合XA标准的驱动程序,容器将自动处理事务。

    检查这些链接是否为exmaples:
    http://blog.inflinx.com/2010/04/08/spring-jta-jpa-jms/
    http://www.oracle.com/technetwork/java/faq-140431.html#relship_transac