[Seasar-user:5205] Re: [S2Dao] トランザクションについて。

mail.list.dev [E-MAIL ADDRESS DELETED]
2006年 11月 20日 (月) 02:29:03 JST


近藤です。
私も同様の現象ではまりました。
原因は、updateAdd を実装しているクラスと、daoを別々のContainer
(別インスタンス)にしていた為、トランザクションが働かない(無効?)
という状態になりました。

対応策としては、

1.updateAddメソッドの実装クラスをコンテナから取得する時に、同時に
daoのインスタンスも取得し、実装クラスにsetterで与えるようにする。
つまり、updateAddメソッドの実装クラス内でdaoインスタンスを生成
 しない。
2.containerから取得する際、SingletonS2ContainerFactoryを使用する。

という2つの方法がありますが、私は1.を採用しました。

竹之内のソースを確認したわけではないので、はずしているかもしれません。
差し支えなければソースを見せてもらえば、より具体的な回答ができるかと
思います。
※必要なのは、updateAddの呼び出しているクラス、updateAddメソッドの
 実装クラスです。



kazuya Takenouchi wrote
> 竹之内です。
> お世話になります。
>
> サービス層のupdateAddというメソッドにトランザクション(j2ee.requiredTx)
> をかけ、そのメソッド内で、daoをよび、更新や追加をしています。
> daoにはトランザクションはかけていません。
> その際、途中でエラーが出ても、ロールバックがされません。
>
> ログにはトランザクションをロールバックしました。
> と出ているのですが、テーブルを見るとロールバックされていませんでした。
>
> どのような原因が考えられますでしょうか?
>
> 環境:
> s2-dao-1.0.39
> s2-2.3.10
> DB2 V8.1
>
> ご教授頂ければ幸いです。
> よろしくお願いいたします。
>
> --------------------------------------
> Yahoo! JAPAN "Pink Ribbon Campaign 2006"
> -Breast Cancer Awareness-
> http://pr.mail.yahoo.co.jp/pinkribbon/
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>   




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