[Seasar-user:16873] [Teeda]UserTransaction の使用に関して
Nishioka Naoto
[E-MAIL ADDRESS DELETED]
2009年 2月 11日 (水) 14:33:54 JST
お世話になっております、にしおかです。
Tomcat + PostgreSQL×n(n=2以上)という環境で、
Two phase commitが必要となるアプリケーションの開発を
行う予定です。
開発期間が非常に短いと言うこともあり、
使い慣れたTeeda + S2Daoを使用しようと思っているのですが、
public UserTransaction userTransaction;
でUserTransactionをDIし、PageクラスのdoXxxメソッドで
userTransaction.begin();
を行ったタイミングで、
[ESSR0316]ネストしたトランザクションはサポートしていません
の例外がスローされます。
調べてみると、customizer.diconにて、do.*などに対して
j2ee.requiredTx が指定されていることに起因しているようです。
これにより、UserTransaction#begin()よりも先に
自動的にトランザクションが開始され、上記の例外に
つながっているようです(プロジェクトはDolteng 0.34.0で作成)。
デフォルトで doXxx メソッド等に対して
@RequiredTx(に対応するもの)が指定されているということは、
Teeda + S2Daoの組み合わせの環境における
UserTransactionは使用しない方がいいということなのでしょうか?
「トランザクションを開始しない」というアノテーションは
見あたらないようなので、この環境でUserTransactionを使用するために
customizer.diconから上記設定を削除するしかないかと思うのですが、
その認識で問題ありませんでしょうか。
(この場合、@RequiredTxアノテーションを記述することが
増えることにもつながりそうですが)
あるいは、他にお勧めの方法等はございますでしょうか?
------------------------------
Nishioka Naoto
Seasar-user メーリングリストの案内