[Seasar-user:18306] [S2Tx] RequiresNewTxの挙動について

Nishiwaki Kiyoyuki [E-MAIL ADDRESS DELETED]
2009年 8月 18日 (火) 11:26:28 JST


西腋と申します。
お世話になります。

Seasar 2.4.39 を使用して宣言的トランザクションのサンプルを作成していたのです
が
一点確認したいことがありますので、よろしくお願いいたします。

サンプルでは、Serviceに対して TxAttributeCustomizer を適用して
以下のようにアノテーションでのトランザクションの種類を指定しています。

Test1Service : RequiredTx
Test2Service : RequiresNewTx
Test3Service : RequiredTx

この際、Test1ServiceのトランザクションをTx1、
Test2Service、Test3ServiceのトランザクションをTx2として。

Test3ServiceにてRuntimeExceptionをスローし
Test1ServiceでCatchして例外を握りつぶす(例外を再スローしない)場合
Tx1、Tx2共にロールバックされました。
(添付のサンプルの「Required-RequiresNew(Rollback1-1)」ボタンを押した場合)

Tx2がロールバックされるのは、以下の仕様によるもと思います。
http://ml.seasar.org/archives/seasar-user/2008-October/016054.html

確認したい点は、
Tx1もロールバックされますが、これはS2Txの仕様でしょうか?


別途サンプルを作り動かしてみたのですが、
ejb3tx.dicon を使用してEJB3.0互換のTxインタセプターと
TransactionAttributeアノテーションを利用した場合、
Tx1はコミット、Tx2はロールバックされます。

ですので、S2Txの標準機能と、EJB3.0互換機能で
トランザクションの制御方式が異なっているように思えるため
確認させていただきたく思っております。
よろしくお願いいたします。
-------------- next part --------------
A non-text attachment was scrubbed...
Name: s2tx-sample.zip
Type: application/x-zip-compressed
Size: 66322 bytes
Desc: 無し
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20090818/b4e28532/attachment.bin>


Seasar-user メーリングリストの案内