如果在单个事务中使用多个数据源,是否有必要使用XADatasource?

时间:2017-01-14 00:07:17

标签: transactions datasource wildfly

我有多个DataSource指向同一个MySQL数据库服务器上的不同模式。据我所知,当您有多个Web服务器时,通常会使用分布式事务,因此您可以根据需要回滚任何更改,但在这种情况下是否需要使用XADataSource,尽管它是相同的数据库服务器而只是不同的模式?

当我尝试在单个事务中使用多个数据源时,我收到如下错误:

ARJUNA012140: Adding multiple last resources is disallowed. Trying to add     LastResourceRecord(XAOnePhaseResource)

我设法通过将此问题添加到standalone.xml来解决此问题:

 <system-properties>
      <property name="com.arjuna.ats.arjuna.allowMultipleLastResources" value="true"/>
 </system-properties>

但后来我收到了这个警告:

10:25:02,243 WARN  [com.arjuna.ats.arjuna] (Batch Thread - 3) ARJUNA012141: Multiple last resources have been added to the current transaction. This is transactionally unsafe and should not be relied upon. 
Current resource is LastResourceRecord(XAOnePhaseResource(LocalXAResourceImpl@7e0cda5c[connectionListener=da06ed8 connectionManager=76f8e0c5 warned=false currentXid=< formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffffc0a800de:5a5b164e:5878fd9f:10c, node_name=1, branch_uid=0:ffffc0a800de:5a5b164e:5878fd9f:10e, subordinatenodename=null, eis_name=java:jboss/SomeDataJNDI> productName=MySQL productVersion=10.1.18-MariaDB jndiName=java:jboss/SomeDataJNDI]))

所以现在我想知道我是否应该在一次交易中使用多个非XA数据源。如果我不需要,我想避免使用XADataSources。

0 个答案:

没有答案