1

Weblogic プールされた非 XA SQL Server JDBC ドライバーを使用するアプリケーションがあります。問題の原因の流れは次のとおりです。

データソースから接続を取得します。

自動コミットを false に設定します。

CallableStatement を作成します。

パラメータを設定します。

executeUpdate を呼び出します。

  • ストアド プロシージャ コール内で、SET XACT_ABORT を ON にすると、データベースでエラーが発生する

アプリケーションは、CallableStatement の out パラメータでエラー コードを認識します。

CallableStatement を閉じます

接続でロールバックを呼び出します。

例外がスローされます:

2013-Oct-17 16:45:20.500 EDT||XXXXXXX|asyncDelivery9|XXX|XXX|XXXX-a3436e48-1672-4a26-88c0-50b9954f6a42|ERROR|XXXXX|rollBack|サーバーはトランザクションの再開に失敗しました。説明:4200000012. com.microsoft.sqlserver.jdbc.SQLServerException: サーバーはトランザクションを再開できませんでした。説明:4200000012. com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError (SQLServerException.java:216) で ~ [sqljdbc4.jar:na] com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF (tdsparser.java:254) で ~ [sqljdbc4. jar:na] com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:84) で ~[sqljdbc4.jar:na] com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:39) で~[sqljdbc4.jar:na] at com.microsoft.sqlserver.jdbc.SQLServerConnection$1ConnectionCommand.doExecute(SQLServerConnection.java:

接続が閉じられています。

次に、アプリケーションがデータ ソースから接続を取得しようとすると、次のエラーがスローされます。

java.sql.SQLException: Failed to setAutoCommit to true for pool connection: First we got The server failed to resume the transaction. Desc:4200000012., then we got The server failed to resume the transaction. Desc:4200000012.
        at weblogic.jdbc.wrapper.PoolConnection.init(PoolConnection.java:70) ~[wlfullclient.jar:12.1.1.0]
        at weblogic.jdbc.common.internal.RmiDataSource.getPoolConnectionObj(RmiDataSource.java:639) ~[wlfullclient.jar:12.1.1.0]
        at weblogic.jdbc.common.internal.RmiDataSource.getPoolConnection(RmiDataSource.java:478) ~[wlfullclient.jar:12.1.1.0]
        at weblogic.jdbc.common.internal.RmiDataSource.getConnectionInternal(RmiDataSource.java:558) ~[wlfullclient.jar:12.1.1.0]
        at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:518) ~[wlfullclient.jar:12.1.1.0]
        at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:511) ~[wlfullclient.jar:12.1.1.0]

Weblogic ログには、次のログが記録されます。

<Oct 15, 2013 3:07:50 PM EDT> <Warning> <JDBC> <BEA-001153> <Forcibly releasing inactive/harvested connection "weblogic.jdbc.wrapper.PoolConnection_com_microsoft_sqlserver_jdbc_SQLServerConnection@238607" back into the data source connec
tion pool "MASTERDB", currently reserved by: reclaimed because of init failure before user access. Not because of inactivity..>

接続上のトランザクションが終了していないようです。しかし、トランザクションを終了すると思っていたロールバックが呼び出されました。次に Weblogic が接続を返そうとすると、初期化中にエラーが発生します。問題が何であるかについてのアイデアはありますか?最後に自動コミットを明示的にtrueに戻していませんが、それが問題になる可能性がありますか?

4

1 に答える 1