У меня есть 2 источника данных, и в методе мне нужно писать и читать из 2 баз данных. База данных - PostgreSQL, а мое приложение EAR работает на wildfly-16.
Я не могу использовать 2 подключения к базе данных одним и тем же способом
Хорошо, я знаю это, потому что система не может управлять транзакциями в другой базе данных.
Итак, я разделил методы в моем ejb:
@TransactionAttribute(TransactionAttributeType.NEVER)
public Response mainMethod(String parameter) {
method1();
method2()
}
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
private void method1(){
...write on database 1...
}
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
private void method2(){
...write on database 2...
}
Почему я все еще получаю ту же ошибку? Разве звонки не управляются двумя разными транзакциями?
ARJUNA012140: Adding multiple last resources is disallowed.
Trying to add LastResourceRecord(XAOnePhaseResource(LocalXAResourceImpl@594d9ba8[connectionListener=677e78 connectionManager=2a095926 warned=false currentXid=< formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffffc0a86e69:-9dc6f57:5d08b51e:f58, node_name=1, branch_uid=0:ffffc0a86e69:-9dc6f57:5d08b51e:f8a, subordinatenodename=null, eis_name=java:/jboss/datasource/db1 > productName=PostgreSQL productVersion=10.8 (Ubuntu 10.8-0ubuntu0.18.04.1) jndiName=java:/jboss/datasource/db1])),
but already have LastResourceRecord(XAOnePhaseResource(LocalXAResourceImpl@39fc2dc2[connectionListener=3724f31c connectionManager=39a995fb warned=false currentXid=< formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffffc0a86e69:-9dc6f57:5d08b51e:f58, node_name=1, branch_uid=0:ffffc0a86e69:-9dc6f57:5d08b51e:f64, subordinatenodename=null, eis_name=java:/jboss/datasource/db2 > productName=PostgreSQL productVersion=10.8 (Ubuntu 10.8-0ubuntu0.18.04.1) jndiName=java:/jboss/datasource/db2]))