[Seasar-user:11534] Re: requiresNewTxにてcommit時に例外が発生した場合にRollbackされない
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2007年 11月 8日 (木) 04:00:09 JST
小林 (koichik) です.
Date: Wed, 07 Nov 2007 23:24:24 +0900
From: 鈴木 順 <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:11531] Re: requiresNewTxにてcommit時に例外が発生した場合にRollbackされない
> ■WASの場合
>
> [07/11/07 21:19:32:203 JST] 0000003c S2SessionFact I jp.co.worksap.common.s2.S2SessionFactoryImpl bindSession S2SessionFactoryImpl::bindSession->createSession.tx=[E-MAIL ADDRESS DELETED]
> [07/11/07 21:19:32:203 JST] 0000003c S2SessionFact I jp.co.worksap.common.s2.S2SessionFactoryImpl getConnection S2SessionFactoryImpl::getConnection.ThreadId=1
>
> SQL文
ここまでは最初の required なトランザクションですよね.
そして,
> [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.
requiresNew に入ったところでいきなりこれなんですね.
> 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)
> at org.seasar.extension.tx.adapter.WAS6TransactionManagerAdapter.executeCallback(WAS6TransactionManagerAdapter.java:123)
> at org.seasar.extension.tx.adapter.WAS6TransactionManagerAdapter.requiresNew(WAS6TransactionManagerAdapter.java:72)
このスタックトレースを見ると,requiresNew な
トランザクションの開始処理で例外が発生してるので,
> S2SessionFactoryImpl::bindSession->createSession
> の発生回数が違います。
は問題ではないですね.
requiresNew なトランザクション開始するところで
こけていて,Hibernate にアクセスする前なので.
前のメールで書いた UOWManager が期待と違う動きを
してるかも? というのも関係なさそうなので,
IBM さんにお伺いする必要もなさそうです.
気になるのは,
> at com.ibm.ws.LocalTransaction.LTCCallbacks.contextChange(LTCCallbacks.java:136)
> at com.ibm.ws.LocalTransaction.LTCUOWCallback.contextChange(LTCUOWCallback.java:166)
この辺りに LocalTransaction と出てること.
GlobalTransaction とかになるはずじゃないかと
思うのですが.
XA ではない DataSource が使われてないでしょうか?
であれば,新しい requiresNew なトランザクションに
切り替えられないのも辻褄は合いそう.
念のため,データソースの設定を見直しをお願いします.
他に考えられるのは required なトランザクションが
グローバルトランザクションになってないことですが,
こちらはもう少し調べてみます.
--
<component name="koichik">
<property name="fullName">"Koichi Kobayashi"</property>
<property name="email">"[E-MAIL ADDRESS DELETED]"</property>
<property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>
Seasar-user メーリングリストの案内