[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 メーリングリストの案内