[Seasar-user:21521] Re: [Doma]別フレームワークのトランザクション管理機能を使用する方法について
Toshihiro Nakamura
[E-MAIL ADDRESS DELETED]
2012年 12月 7日 (金) 17:59:50 JST
中村(taedium)です。
> (1)
> DataSource:org.apache.commons.dbcp.BasicDataSource
> TransactionManager:org.springframework.jdbc.datasource.DataSourceTransactionManager
> AppConfig:上記DataSourceをラップして、トランザクション管理下のコネクションを返却する
> DataSourceをDIコンテナから取得し返すよう実装
「上記DataSourceをラップして」というのは
org.springframework.jdbc.datasource.TransactionAwareDataSourceProxyを
使っているということでしょうか?
TransactionAwareDataSourceProxyを使えば、
トランザクション中のコネクションはcloseされないと認識しています。
もしかすると、トランザクションが適切にかかっていないのかもしれませんね。
まずは、Domaなしで適切に動くか確かめてみてはいかがでしょうか。
On Fri, 7 Dec 2012 16:37:37 +0900
Kikuchi Yoko <kikuchi.yoko @ jp.fujitsu.com> wrote:
> お世話になります。
> 菊地と申します。
>
> Doma 1.25.0 を利用させて頂いております。
>
> DomaとSpring(3.1.1)を連携しているのですが、
> Springのトランザクション管理機能を利用するとうまく動作しないため質問させてください。
>
> Springのトランザクションマネージャを利用して、Serviceクラス(Dao呼び出しクラス)の
> メソッド単位でトランザクション制御を行っています。
> このとき、トランザクション管理が正しく実行されずに困っています。
>
> 動作検証は以下の組み合わせを試しました。
>
> (1)
> DataSource:org.apache.commons.dbcp.BasicDataSource
> TransactionManager:org.springframework.jdbc.datasource.DataSourceTransactionManager
> AppConfig:上記DataSourceをラップして、トランザクション管理下のコネクションを返却する
> DataSourceをDIコンテナから取得し返すよう実装
>
> 問題事象:トランザクション管理側でコミットやロールバックを実行しようとすると、
> コネクションが既にcloseされているためエラーとなる。
>
> 予想原因:DaoImpl内で利用しているCommandクラスの実行(execute)メソッドで
> 必ずコネクションのcloseが行われるよう実装されてるためだと考えています。
> (ModifyCommand#execute() L77 など)
>
> (2)
> DataSource:JOTMを利用しTomcat側で定義したDataSourceをルックアップ
> TransactionManager:org.springframework.transaction.jta.JtaTransactionManager
> AppConfig:上記DataSourceをDIコンテナから取得し返すよう実装
>
> 問題事象:トランザクションに無関係なコネクションが使用され、
> Daoメソッド終了時点でコミットされる。
>
>
> (1)について、Daoメソッドにてコネクションをcloseしない方法がありましたらご教授願います。
> (2)について、外部フレームワークでトランザクション管理する際の設定方法、Configの実装方法で
> 注意点などございましたらご教授願います。
>
> お手数おかけいたしますが、よろしくお願いいたします。
>
> 以上です。
>
> **************************************************
> 菊地庸子 (Kikuchi Yoko)
> E-mail:kikuchi.yoko @ jp.fujitsu.com
> **************************************************
>
>
> _______________________________________________
> Seasar-user mailing list
> Seasar-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-user
--
Toshihiro Nakamura <nakamura.toshihiro @ isid.co.jp>
Seasar-user メーリングリストの案内