При обновлении до тонкого драйвера Oracle JDBC SQLException: Unexpected exception while enlisting XAConnection
(WebLogic Server 10.0, версия oracle) мы получаем ошибку, указанную ниже.
Мы последовали совету Oracle до
- изменить глобальное время ожидания в weblogic, то есть для пулов соединений JDBC установите
XASetTransactionTimeout
на true
и XATransactionTimeout
на ноль
Если для этого параметра задано значение 0, время ожидания сеанса XAResource будет установлено равным глобальному времени ожидания транзакции.
Следовательно, время ожидания на WLS должно быть изменено
Если проблема остается, ее можно избежать, установив KeepXAConnTillTxComplete="true"
.
Версия продукта базы данных: Oracle9i Enterprise Edition, выпуск 9.2.0.5.0 - Производство С опциями разделения, OLAP и Oracle Data Mining, выпуск JServer 9.2.0.5.0 - Производство
Имя драйвера JDBC: драйвер JDBC Oracle
Версия драйвера JDBC: 11.1.0.7.0-Production
Мы знаем, что одним из вариантов не является использование 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)