[Seasar-user:11272] Re: Sun ONE Application Server 7でのS2Txの利用方法について
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2007年 10月 24日 (水) 19:58:13 JST
お世話になります。
水口です。
>AP サーバ側の設定の問題なのか,S2 側の
>設定の問題なのか,切り分けをお願いします.
>
>Seasar2 を使わず,Servlet などで UserTransaction および
>TransactionManager と DataSource を取得して
>DB の更新後にロールバックをしてみてください.
検証の結果は、下記の2の結果となりました。
>2.UserTransaction でロールバックした場合は
> DB はロールバックされるが,
> TransactionManager でロールバックした場合は
> DB はロールバックされない.
つまり、TransactionManager の取得方法に問題があるということでしょうか。
ちなみに、TransactionManagerの取得方法は以下の2つの方法で試みましたが、いずれもロールバックが失敗に終わりました。
・TransactionManager tx = (TransactionManager) com.sun.enterprise.Switch.getSwitch().getTransactionManager();
・TransactionManager tx = (TransactionManager) com.sun.jts.jta.TransactionManagerImpl.getTransactionManagerImpl();
以下のドキュメントに、「ローカルトランザクションとグローバルトランザクションはどちらも、javax.transaction.UserTransaction インタフェースによって境界が設定されるので、クライアントはこのインタフェースを使う必要があります。」という記述があります。
http://docs.sun.com/source/817-0605/detrans.html#683379
もしかしたら、Sun ONE Application Server 7 はアプリケーションから TransactionManager を利用することがサポートされていないのかもしれません。
Seasar-user メーリングリストの案内