Я пытаюсь использовать Нараяна ТМ с источниками данных Oracle XA:
@Bean
@ConfigurationProperties(prefix = "narayana.ref")
public OracleXADataSource refXaDataSource() throws SQLException {
return new OracleXADataSource();
}
@Bean(name = "REF")
public DataSource refDataSource() throws SQLException {
OracleXADataSource ds = refXaDataSource();
return new NarayanaDataSourceBean(ds);
}
@Bean
@ConfigurationProperties(prefix = "narayana.log")
public OracleXADataSource logXaDataSource() throws SQLException {
return new OracleXADataSource();
}
@Bean(name = "LOG")
public DataSource logDataSource() throws SQLException {
OracleXADataSource ds = logXaDataSource();
return new NarayanaDataSourceBean(ds);
}
@Bean
public NarayanaProperties narayanaProperties() {
return new NarayanaProperties();
}
@Bean
public NarayanaConfigurationBean narayanaConfigurationBean() {
return new NarayanaConfigurationBean(narayanaProperties());
}
@Bean
public TransactionManager narayanaTransactionManager() {
return com.arjuna.ats.jta.TransactionManager.transactionManager();
}
@Bean
public JtaTransactionManager transactionManager(UserTransaction userTransaction,
TransactionManager transactionManager) {
JtaTransactionManager jtaTransactionManager = new JtaTransactionManager(userTransaction, transactionManager);
return jtaTransactionManager;
}
@Bean
public UserTransaction narayanaUserTransaction() {
return com.arjuna.ats.jta.UserTransaction.userTransaction();
}
когда я готов данные из базы данных все в порядке. Но когда я хочу что-то удалить, я получаю эту ошибку:
2018-11-08 11:03:20.362 [pool-3-thread-1] WARN com.arjuna.ats.jta - ARJUNA016061: TransactionImple.enlistResource - XAResource.start returned: XAException.XAER_PROTO for < formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffff7f000101:9ba1:5be409e7:0, node_name=1, branch_uid=0:ffff7f000101:9ba1:5be409e7:3, subordinatenodename=null, eis_name=0 >
oracle.jdbc.xa.OracleXAException: XAErr (-6): Routine was invoked in an inproper context. ORA-24776 SQLErr (0)
at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1112)
at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:265)
at com.arjuna.ats.internal.jdbc.IsSameRMOverrideXAResource.start(IsSameRMOverrideXAResource.java:66)
at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.enlistResource(TransactionImple.java:662)
at com.arjuna.ats.internal.jdbc.ConnectionImple.registerDatabase(ConnectionImple.java:940)
at com.arjuna.ats.internal.jdbc.ConnectionImple.prepareStatement(ConnectionImple.java:173)
...
Caused by: java.sql.SQLException: ORA-24776: cannot start a new transaction
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:494)
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:441)
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:436)
at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:1061)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:623)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:252)
at oracle.jdbc.driver.T4CTTIOtxse.doOTXSE(T4CTTIOtxse.java:166)
at oracle.jdbc.driver.T4CXAResource.doStart(T4CXAResource.java:207)
at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:260)
... 53 common frames omitted