[Seasar-user:11571] Re: requiresNewTxにてcommit時に例外が発生した場合にRollbackされない
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2007年 11月 9日 (金) 18:30:59 JST
小林 (koichik) です.
Date: Fri, 09 Nov 2007 17:40:43 +0900
From: 鈴木 順 <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:11570] Re: requiresNewTxにてcommit時に例外が発生した場合にRollbackされない
> InfoCenter では以下の記述となります。
これは自分も見ましたが,該当しないと思います.
> とりあえずS2SessionFactoryにデバッグ文を入れて同じコネクションを
> 使用しているか否かを確認してみます。
その必要はないと思います.
問題の例外は,WAS がトランザクションを開始する
処理中に発生しています.
WAS がトランザクションを開始した後の
アプリケーション (S2 含む) の処理中に
発生しているわけではありません.
以下の部分だけでも,ちゃんとスタックトレースを
見るように伝えた方がいいと思います.
[07/11/07 21:19:32:297 JST] 0000003c ConnectionMan E J2CA0058E: ConnectionManager は、リソース jdbc/cimTestXA に対して、接続 [E-MAIL ADDRESS DELETED] を ManagedConnection MCWrapper id 6152d0ce Managed connection [E-MAIL ADDRESS DELETED] State:STATE_TRAN_WRAPPER_INUSE
と関連付けることができませんでした。 例外を受け取りました: javax.resource.ResourceException: Current UOW does not match the UOW with which the ManagedConnection is already enlisted.
at com.ibm.ejs.j2c.ConnectionManager.reAssociate(ConnectionManager.java:1612)
at com.ibm.ejs.j2c.HandleList.reAssociate(HandleList.java:354)
at com.ibm.ejs.j2c.ConnectionHandleManager.userTranBegin(ConnectionHandleManager.java:310)
at com.ibm.ejs.j2c.LTCHandleCollaborator.transactionPostBegin(LTCHandleCollaborator.java:163)
at com.ibm.ejs.j2c.LTCHandleCollaborator.contextChange(LTCHandleCollaborator.java:104)
at com.ibm.ws.LocalTransaction.LTCCallbacks.contextChange(LTCCallbacks.java:136)
at com.ibm.ws.LocalTransaction.LTCUOWCallback.contextChange(LTCUOWCallback.java:166)
at com.ibm.ws.uow.UOWScopeCallbackManager.notifyCallbacks(UOWScopeCallbackManager.java:62)
at com.ibm.ws.Transaction.JTA.UserTransactionImpl.begin(UserTransactionImpl.java:180)
at com.ibm.ws.uow.UOWManagerImpl.uowBegin(UOWManagerImpl.java:1133)
at com.ibm.ws.uow.UOWManagerImpl.runUnderNewUOW(UOWManagerImpl.java:957)
at com.ibm.ws.uow.UOWManagerImpl.runUnderUOW(UOWManagerImpl.java:506)
(ここから requiresNew なトランザクション開始)
(中略:required なトランザクションでの DB アクセスは問題なし)
at com.ibm.ws.uow.UOWManagerImpl.runUnderNewUOW(UOWManagerImpl.java:969)
at com.ibm.ws.uow.UOWManagerImpl.runUnderUOW(UOWManagerImpl.java:506)
(ここから required なトランザクション開始)
これを見れば,InfoCenter の記述が該当しないことは
明らかです.
UOWManager は,トランザクションを開始した後
アプリ (S2Tx) をコールバックします.
下の方にある required なトランザクションからは
ちゃんとコールバックされますが,その上にある
requiresNew なトランザクションでは,uowBegin()
というトランザクションの開始処理中に例外が発生
しています.
--
<signature>
<name>Koichi Kobayashi</name>
<e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>
Seasar-user メーリングリストの案内