升级到Oracle JDBC精简驱动程序会导致
SQLException: Unexpected exception while enlisting XAConnection
(WebLogic Server 10.0,Oracle版本)我们得到下面列出的错误。
我们的确听从了甲骨文的建议
更改WebLogic中的全局超时,即对于JDBC连接池,设置
XASetTransactionTimeout
到
true
和
XATransactionTimeout
到零
当此参数设置为零时,xaresource会话超时将设置为全局事务超时。
因此,需要修改WLS上的超时
如果问题仍然存在,可以通过设置
KeepXAConnTillTxComplete="true"
.
数据库产品版本:Oracle9i Enterprise Edition 9.2.0.5.0版-带分区的生产、OLAP和Oracle数据挖掘选项JServer 9.2.0.5.0版-生产
JDBC驱动程序名称:Oracle JDBC驱动程序
JDBC驱动程序版本:11.1.0.7.0-生产
我们知道一种选择是不使用XA连接,但在我们的情况下,这是不可能的。我们需要使用XA连接。
java.sql.SQLException: Unexpected exception while enlisting XAConnection java.sql.SQLException: XA error: XAResource.XAER_PROTO start() failed on resource 'serviceDataSource': XAER_PROTO : Routine was invoked in an inproper context
oracle.jdbc.xa.OracleXAException
at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1101)
at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:237)
at weblogic.jdbc.wrapper.VendorXAResource.start(VendorXAResource.java:50)
at weblogic.jdbc.jta.DataSource.start(DataSource.java:696)
at weblogic.transaction.internal.XAServerResourceInfo.start(XAServerResourceInfo.java:1183)
at weblogic.transaction.internal.XAServerResourceInfo.xaStart(XAServerResourceInfo.java:1116)
at weblogic.transaction.internal.XAServerResourceInfo.enlist(XAServerResourceInfo.java:275)
at weblogic.transaction.internal.ServerTransactionImpl.enlistResource(ServerTransactionImpl.java:508)
at weblogic.transaction.internal.ServerTransactionImpl.enlistResource(ServerTransactionImpl.java:435)
at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1407)
at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1331)
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:426)
at weblogic.jdbc.jta.DataSource.connect(DataSource.java:383)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:339)