nonXADatasource与jta ="true"和XADataSource有什么区别?

use*_*882 17 java jboss datasource jta xa

令我感到困惑的是,我们可以允许将JTA事务与非XA数据源一起使用.链接到文档.那么XA /非XA数据源之间有什么区别?我们为什么要使用XA数据源呢?

ash*_*ein 29

从最一般的角度来说,XA事务是可以跨越多个资源的"全局事务".非XA事务总是只涉及一个资源.

XA事务涉及协调事务管理器,其中一个或多个数据库(或其他资源,如JMS)都涉及单个全局事务.非XA事务没有事务协调器,并且单个资源本身正在执行其所有事务(这有时称为本地事务).

jta ="true",自动提交事务.


jer*_*nja 14

我自己想知道这个(在非XA数据源中使用"JTA"选项)所以我测试了几个配置.我有一个分布式事务连接到两个MySQL服务器.

这是我的结果.如果我有:

  1. 两个非XA数据源,都有JTA ="true"

结果:错误"无法在输入元感知对象时登记事务."

  1. 两个非XA数据源,其中一个JTA ="true"

结果:他们不会参与分布式事务.每个都将单独提交.

  1. 一个XA和一个非XA,JTA ="false",

结果:与#2相同

  1. 一个XA和一个非XA,JTA ="true".

结果:工作!

从这些看起来,"使用JTA"选项表明如果有XA数据源,它是否将参与分布式事务.