【发布时间】:2017-12-06 08:28:58
【问题描述】:
从数据源获取连接时,我在应用程序日志中遇到异常。虽然它在异常中显示“导致:无法启动新事务”,但我没有在任何地方开始新事务。
- 我间歇性地遇到此问题,并非每次都出现。
- 我正在使用 web logic 12c(weblogic 版本 12.1.3.0.0)并使用瘦/XA 驱动程序。
- 我仅在生产环境中遇到此问题,其他环境没有此问题。
- 使用 oracle 12.1.0.2.0 作为数据库
- 使用 ojdbc6.jar(Oracle jdbc 驱动程序版本 12.1.0.2.0 JDBC 4.0)
我得到的例外,
cause:java.sql.SQLException: Unexpected exception while enlisting XAConnection java.sql.SQLException: XA error: XAResource.XAER_PROTO start() failed on resource 'myds': XAER_PROTO : Routine was invoked in an inproper context
oracle.jdbc.xa.OracleXAException
at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1229)
at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:246)
at weblogic.jdbc.jta.DataSource.start(DataSource.java:830)
at weblogic.transaction.internal.XAServerResourceInfo.start(XAServerResourceInfo.java:1311)
at weblogic.transaction.internal.XAServerResourceInfo.xaStart(XAServerResourceInfo.java:1244)
at weblogic.transaction.internal.XAServerResourceInfo.enlist(XAServerResourceInfo.java:292)
at weblogic.transaction.internal.ServerTransactionImpl.enlistResource(ServerTransactionImpl.java:585)
at weblogic.transaction.internal.ServerTransactionImpl.enlistResource(ServerTransactionImpl.java:490)
at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1749)
at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1651)
at weblogic.jdbc.jta.DataSource.getConnectionInternal(DataSource.java:517)
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:494)
at weblogic.jdbc.common.internal.RmiDataSource.getConnectionInternal(RmiDataSource.java:565)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:545)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:538)
....
.....
Caused by: java.sql.SQLException: ORA-24776: cannot start a new transaction
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:392)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:385)
at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:1018)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
at oracle.jdbc.driver.T4CTTIOtxse.doOTXSE(T4CTTIOtxse.java:164)
at oracle.jdbc.driver.T4CXAResource.doStart(T4CXAResource.java:188)
at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:241)
... 60 more
at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1754)
at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1651)
at weblogic.jdbc.jta.DataSource.getConnectionInternal(DataSource.java:517)
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:494)
at weblogic.jdbc.common.internal.RmiDataSource.getConnectionInternal(RmiDataSource.java:565)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:545)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:538)
我们认为这可能是 JDBC 驱动程序不兼容的问题,但是否正确发现或者我们可能需要检查其他内容?
【问题讨论】:
标签: java ejb weblogic datasource xa