我有多个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。