Upgrading to Oracle JDBC thin driver results in SQLException: Unexpected exception while enlisting XAConnection

13,234

After so consultation from Oracle we decided to upgrade the driver to the latest driver available. This seems to have solved the issue.

Share:
13,234
mrjohn
Author by

mrjohn

John has graduated from Clemson University with a M.S. in Computer Science and also holds a Computer Engineering degree. After graduating from Clemson, John has been consulting in the field of software engineering for some of the top companies; Enron, EDS, Sprint, Fidelity, Expeditrix, Progressive, NBSA.

Updated on June 04, 2022

Comments

  • mrjohn
    mrjohn about 2 years

    In Upgrading to Oracle JDBC thin driver results in SQLException: Unexpected exception while enlisting XAConnection (WebLogic Server 10.0, oracle version ) we are getting the error listed below.

    We did follow Oracle's advice to

    1. change the global timeout in weblogic, i.e. For the JDBC Connection Pools set the XASetTransactionTimeout to true and XATransactionTimeout to zero When this parameter is set to zero, the XAResource Session Timeout will be set to the global transaction timeout. Hence the time out on the WLS needs to be modified
    2. If the issue still remains it can be avoided by setting KeepXAConnTillTxComplete="true".

      Database Product Version : Oracle9i Enterprise Edition Release 9.2.0.5.0 - Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.5.0 - Production
      JDBC Driver Name : Oracle JDBC driver
      JDBC Driver Version : 11.1.0.7.0-Production

    We know one option is not to use an XA connection, but in our case that is not a possibility. We defenitly need to use XA connections.

    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)
    
    • skaffman
      skaffman almost 14 years
      Just checking, but you're sure you need XA connections? They're a lot more complex than normal JDBC, don't use them unless you really need to.
    • mrjohn
      mrjohn almost 14 years
      Yes we defenitly need to use XA connections.