|
Problem(Abstract) |
A bug in the Oracle® 9i and 9i Release 1 JDBC™ driver
causes the following error when used with WebSphere® Application Server V5
XA datasource:
DSRA0080E: An exception was received by the Data Store Adapter. See
original exception message: Use explicit XA call. |
|
|
|
Cause |
This error is caused by a known bug in the Oracle version
9i or 9i Release 1 JDBC driver. It does not allow an application to use an
Oracle XAConnection if it is not surrounded by XAResource.start() and
XAResource.end() method calls:
[12/22/03 17:24:33:464 CST] 7b378e3f MCWrapper E
J2CA0081E: Method cleanup failed while trying to execute method cleanup on
ManagedConnection
com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl@2fa58e38 from resource
jdbc/TradeDataSource. Caught exception:
com.ibm.ws.exception.WsException: DSRA0080E: An exception was
received by the Data Store Adapter. See original exception message: Use
explicit XA call.
at
com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException.<init>(DataStoreAdapterException.java:244)
at
com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException.<init>(DataStoreAdapterException.java:171)
at
com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException.<init>(DataStoreAdapterException.java:124)
at
com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.cleanupStates(WSRdbManagedConnectionImpl.java:2357)
at
com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.cleanup(WSRdbManagedConnectionImpl.java:2249)
at com.ibm.ejs.j2c.MCWrapper.cleanup(MCWrapper.java:1160)
at
com.ibm.ejs.j2c.poolmanager.FreePool.returnToFreePool(FreePool.java:291)
at com.ibm.ejs.j2c.poolmanager.PoolManager.release(PoolManager.java:1219)
at com.ibm.ejs.j2c.MCWrapper.releaseToPoolManager(MCWrapper.java:1667)
at
com.ibm.ejs.j2c.XATransactionWrapper.afterCompletionCode(XATransactionWrapper.java:359)
at
com.ibm.ejs.j2c.XATransactionWrapper.afterCompletion(XATransactionWrapper.java:300)
at
com.ibm.ws.Transaction.JTA.RegisteredSyncs.distributeAfter(RegisteredSyncs.java:161)
at
com.ibm.ws.Transaction.JTA.TransactionImpl.distributeAfter(TransactionImpl.java:2344)
at
com.ibm.ws.Transaction.JTA.RegisteredResources.flowCommitOnePhase(RegisteredResources.java:1798)
at
com.ibm.ws.Transaction.JTA.RegisteredResources.distributePrepare(RegisteredResources.java:742)
at
com.ibm.ws.Transaction.JTA.TransactionImpl.internalPrepare(TransactionImpl.java:1267)
at
com.ibm.ws.Transaction.JTA.TransactionImpl.commit(TransactionImpl.java:960)
at
com.ibm.ws.Transaction.JTA.TranManagerImpl.commit(TranManagerImpl.java:150)
at
com.ibm.ws.Transaction.JTA.TranManagerSet.commit(TranManagerSet.java:182)
at com.ibm.ejs.csi.TranStrategy.commit(TranStrategy.java:696)
|
|
|
Resolving the
problem |
There are at least two possible solutions:
- Follow this solution from WebSphere
Application Server, Version 5.0.1 Release Notes under section "Setting
the correct value for autoCommit in the connection of the
OracleXADataSource"
When your application tries to use the OracleXADataSource to run in an
autoCommit enabled mode, set the autoCommit value to TRUE once a
connection is obtained from the OracleXADatasource. The default autoCommit
value for every connection from the XA data source is FALSE. This
value is different from the OracleConnectionPoolDataSource, which has the
default autoCommit value of TRUE.
If your application runs in a global transaction, set the autoCommit value
to FALSE to start a global transaction.
Bug#2618770 has been accepted by Oracle for this problem.
- Upgrade the Oracle JDBC driver to 9i Release 2.
We recommended version 9.2.0.3 or higher
|
|
|