[Seasar-user:11526] Re: requiresNewTxにてcommit時に例外が発生した場合にRollbackされない

鈴木 順 [E-MAIL ADDRESS DELETED]
2007年 11月 7日 (水) 22:25:43 JST


小林さん

お世話になっております。鈴木です。

> この例外の原因になっている例外が出ていませんか?

特には出ていません。

> Hibernate の Session は OpenSessionInViewFilter で
> 用意しているようですが,この時の required な
> トランザクションはサスペンドされているので,
> 内側の requiresNew なトランザクションの中では
> Session を利用することはできません.
> にも関わらず,Session にアクセスしている (Dao を
> 呼び出している) ということはないでしょうか?
> # S2JTA + S2DBCP だとアクセスできちゃうかも
> # しれませんが,本来はアウト.

JTAを良く理解していないのですが、
tm.getTransaction()で帰ってくるTransactionは、
required -> requiresNewの間に帰ってくるTransactionと
requiresNewのメッソド無いで帰ってくるものは同一のものなのでしょうか?

TOMCAT環境では異なるものが帰ってきています。
WAS環境は同一のものが帰ってきます。(たぶん。デバッグ文で確認しました)

僕レベルの想定ですと、
requiresNewで新たなトランザクションを始めたので、
異なるものが帰ってくると想定しています。

S2SessionFactoryImplの中ではTransactionのインスタンス毎に
HibernateのSessionを生成しているので異なるものが帰ってくれば、
requiresNew内のDaoの実行時には、
requiredの時と異なったセションが変えるので問題ないんではと、
思っています。

鈴木





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