带有 jta=“true” 的非XADatasource 和 XADataSource 之间有什么区别?
2022-09-02 02:42:12
我对这样一个事实感到困惑,即我们可以允许将JTA事务与非XA数据源一起使用。链接到文档。那么 XA/非 XA 数据源之间有什么区别呢?我们为什么要使用XA数据源?
我对这样一个事实感到困惑,即我们可以允许将JTA事务与非XA数据源一起使用。链接到文档。那么 XA/非 XA 数据源之间有什么区别呢?我们为什么要使用XA数据源?
XA 事务,在最一般的术语中,是可能跨多个资源的“全局事务”。非 XA 事务始终只涉及一个资源。
XA 事务涉及一个协调事务管理器,其中一个或多个数据库(或其他资源,如 JMS)都参与到单个全局事务中。非 XA 事务没有事务协调器,单个资源自行执行其所有事务工作(这有时称为本地事务)。
注意:上面的解释取自:theserverside(Mike Spille)
jta=“true”,事务自动提交。
我自己也想知道这个问题(在非XA数据源中使用JTA“选项),所以我测试了几种配置。我有一个连接到两个MySQL服务器的分布式事务。
这是我的结果。如果我有:
结果:错误“无法登记进入元感知对象的事务”。
结果:他们不会参与分布式事务。每个都将单独提交。
结果:与 #2 相同
结果:有效!
从这些来看,“使用JTA”选项表明如果存在XA数据源,它是否会参与分布式事务。