代码之家  ›  专栏  ›  技术社区  ›  mrjohn

升级到Oracle JDBC精简驱动程序会导致sqlException:登记xaConnection时出现意外异常

  •  3
  • mrjohn  · 技术社区  · 15 年前

    升级到Oracle JDBC精简驱动程序会导致 SQLException: Unexpected exception while enlisting XAConnection (WebLogic Server 10.0,Oracle版本)我们得到下面列出的错误。

    我们的确听从了甲骨文的建议

    1. 更改WebLogic中的全局超时,即对于JDBC连接池,设置 XASetTransactionTimeout true XATransactionTimeout 到零 当此参数设置为零时,xaresource会话超时将设置为全局事务超时。 因此,需要修改WLS上的超时
    2. 如果问题仍然存在,可以通过设置 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)
    
    1 回复  |  直到 15 年前
        1
  •  0
  •   mrjohn    15 年前

    经过Oracle的咨询,我们决定将驱动程序升级到最新的驱动程序。这似乎解决了这个问题。