无法在Spring Boot应用程序中使用Narayana启动新事务

时间:2018-11-08 10:33:14

标签: spring-boot jboss

我正在尝试将narayana TM与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();
}

当我准备好来自db的数据时,一切正常。但是当我要删除某些内容时,出现此错误:

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

0 个答案:

没有答案