从数据源获取连接时,我在应用程序日志中遇到异常。虽然它在异常中显示“由:无法启动新事务”,但我没有在任何地方开始新事务。
我得到的例外,
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驱动程序问题,但它是正确的查找还是我们可能需要检查其他内容?
答案 0 :(得分:0)
您是否通过运行db
脚本为xa
配置了initxa.sql
?如果没有,请使用以下内容:
[小心将此环境复制到 另一台计算机 ,而不是 生产 ]
$ sqlplus / a sysdba
SQL> @?/javavm/install/initxa.sql -- this file is located at $ORACLE_HOME/javavm/install directory.
如果由于数据库内存不足而导致失败,请运行initjvm.sql
脚本(位于同一目录),
SQL> @?/javavm/install/initjvm.sql
在执行期间,它将指示需要调整哪些参数。
可能会告诉您增加java_pool_size
& shared_pool_size
,并在这种情况下这样做。