我感到困惑的是,我们可以允许将JTA事务与非XA数据源一起使用。 Link to the documentation。那么XA /非XA数据源之间的区别是什么?我们为什么要使用XA-datasource呢?
答案 0 :(得分:28)
一般而言,XA事务是可能跨越多个资源的“全局事务”。非XA事务总是只涉及一个资源。
XA事务涉及协调事务管理器,其中一个或多个数据库(或其他资源,如JMS)都涉及单个全局事务。非XA事务没有事务协调器,并且单个资源本身正在执行其所有事务(这有时称为本地事务)。
jta =“true”,自动提交事务。
答案 1 :(得分:12)
我自己想知道这个问题(在非XA数据源中使用“JTA”选项),所以我测试了几种配置。我有一个分布式事务连接到两个MySQL服务器。
以下是我的结果。如果我有:
结果:错误“无法在输入元感知对象时登记事务。”
结果:他们不会参与分布式事务。每个都将单独提交。
结果:与#2相同
结果:有效!
从这些看起来,“使用JTA”选项表明如果有XA数据源,它是否会参与分布式事务。