[seasar-dotnet:1211] Re: Quill で複数データソースでのトランザクション制御に失敗する
koyak
[E-MAIL ADDRESS DELETED]
2008年 12月 9日 (火) 18:49:36 JST
高井さん
小谷です。
現在すぐに確認するのは難しい状態なので
調査するのはもう少し後になると思いますが、
以下の点について教えていただけますでしょうか。
1.XxxTxSettingのDataSourceNameと
_aaaBhv(aaaDao)で使われているXxxDaoSettingのDataSourceNameが
同じになっているか
2.app.config(Seasar.Quill.dll.config)のquillセクションの内容
3.ログにはデータソース名も出力されているはずなので
出力されているデータソース名
よろしくお願いします。
2008/12/09 13:45 高井朋幸 <[E-MAIL ADDRESS DELETED]>:
> 高井です。
> お世話になっております。
>
>
> Quill+DBFlute の Windows アプリでインスタンスもスキーマの異なる複数のDBに
> 接続する環境下でトランザクションの制御に失敗します。
> もしかすると単数DBでも datasource name="" の name 属性を使うと起きるかも
> しれません。
> 確認していただけると幸いです。
>
> ADO でベタなコードを書いて実行してみたところ正常にトランザクションが制御さ
> れたので環境回りは大丈夫だと思います。
>
>
> Transaction 属性をつけたメソッド内で DBFlute の Bhv を呼んで更新する処理が
> あるのですが、ログにはトランザクションの開始とロールバックが記述されている
> のに、実際のテーブルにはデータが書き込まれたままになってしまいます (下記参照)
> 。
> XxxTxSetting は DBFlute で生成されたままで LocalRequiredTxHandler が利用さ
> れています。
> このメソッドでは1つのデータベースにしかアクセスされません。
>
> SQL 実行前にもう一度コネクションを取得しているログが気になります。
> ここで最初にトランザクションを作り出したコネクションと違うコネクションが割
> り当てられているのではないかと思いました。
>
>
> ブレークポイントを利用し SQL の実行直後にコミット・ロールバックする前で
> 停止してテーブルのデータを見たところデータが入っていました。
> それからもトランザクション制御されていないコネクションが利用されているよう
> な感じでした。
>
>
> ----------------------- コード -------------------
> protected AaaBhv _aaaBhv;
> [Transaction(XxxTxSetting)]
> public virtual void MethodAaa() {
> Logger.Info("MethodAaa Start");
> try {
> Aaa aaaEntity = CreateAaaEntity();
> _aaaBhv.Insert(aaaEntity);
> throw new Exception("test");
> } finally {
> Logger.Info("MethodAaa End");
> }
> }
>
> ---------------------- ログ抜粋 ------------------
> - 論理的なコネクションを取得しました
> - トランザクションを開始します
> - MethodAaa Start
> - # DBFlute のログが数行
> - 論理的なコネクションを取得しました
> - SQL ログ INSERT AaaTable .....
> - 論理的なコネクションを閉じました
> - MethodAaa End
> - トランザクションをロールバックしました
> - 論理的なコネクションを閉じました
>
> -------------------------------------------------
>
> よろしくお願いいたします。
>
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>
seasar-dotnet メーリングリストの案内