[Seasar-user:21523] Re: [Doma]別フレームワークのトランザクション管理機能を使用する方法について

Kikuchi Yoko [E-MAIL ADDRESS DELETED]
2012年 12月 10日 (月) 15:15:05 JST


中村(taedium)様

お世話になっております。菊地です。

> 「上記DataSourceをラップして」というのは
> org.springframework.jdbc.datasource.TransactionAwareDataSourceProxyを
> 使っているということでしょうか?
> TransactionAwareDataSourceProxyを使えば、
> トランザクション中のコネクションはcloseされないと認識しています。

Springの勉強不足で上記クラスを使用しておりませんでした。
ローカルデータソース管理(BasicDataSource / DataSourceTransactionManager)の場合
TransactionAwareDataSourceProxyの使用でトランザクション制御が正しく実行されることが確認できました。
ありがとうございます。

JTATransactionManagerを利用した場合は、未だトランザクション制御が正しくできていません。
SpringやJOTM側の設定が原因だと思いますので、勉強してみます。

ご回答ありがとうございました。

以上です。


> -----Original Message-----
> From: seasar-user-bounces @ ml.seasar.org [mailto:seasar-user-bounces @ ml.seasar.org] On Behalf Of
> Toshihiro Nakamura
> Sent: Friday, December 07, 2012 6:00 PM
> To: seasar-user @ ml.seasar.org
> Subject: [Seasar-user:21521] Re: [Doma]別フレームワークのトランザクション管理機能を使用する方
> 法について
>
> 中村(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 mailing list
> Seasar-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-user

**************************************************
 菊地庸子  (Kikuchi Yoko)
 E-mail:kikuchi.yoko @ jp.fujitsu.com
**************************************************



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