[seasar-dotnet:1437] Re: System.Transaction TransactionScopeの入れ子について

koyak [E-MAIL ADDRESS DELETED]
2009年 8月 30日 (日) 12:05:28 JST


清末さん

小谷と申します。

TransactonScopeについてあまり詳しくはないため
回答ではなく質問を返す形になってしまい、恐縮なのですが、

>2の各メソッドにも同様に、<asspect pointcut="MethodB1">のように指定しています。

この2の各メソッドにTransactionInterceptorを適用しない場合
(aspectの指定をせず、入れ子にしない場合)も
同様にロールバックされないでしょうか?

また、ファサードのメソッドを抜けた後、ログの方には
「トランザクションをコミットしました」と出ていたでしょうか。
「トランザクションをロールバックしました」と出ていたでしょうか。


2009年8月29日14:15 KIYOSUE Minoru <[E-MAIL ADDRESS DELETED]>:
> いつも大変お世話になっております、清末@JMIです。
> 先ほど、メーリングリスト登録外のアドレスから誤って送信してしまい大変申し訳ござい
> ません。 再度投稿いたしますのでよろしくお願いいたします。
>
> 今回、ウェブサービスの構築をしております。
> その中で、Tx.RequiredTxトランザクションを使用したトランザクション制御を以下の用に
> 行おうとしておりますが、設定が悪いためかトランザクションが効きません。
>
> 1.ファサード層のメソッドにトランザクションを設定、
> 2.ファサード層から、GetComponent()を使用して、ビジネスロジック層のクラスを
>   呼び出す。
> 3.2を必要なだけクラスを変えて呼び出す。
> 4.3が全て正常終了の場合は、コミットがかかる用にする。
>   (TransactionScopeを使用しているため、1つでもComplete()を通過していなければ
>    ロールバックされると思うのですが。)
>
>
> 1のファサード層のメソッドには、DICONで、<aspect pointcut="MethodA">のように
> 指定しています。
> 2の各メソッドにも同様に、<asspect pointcut="MethodB1">のように指定しています。
>
>
> 実行時のログを見ると、「トランザクションを開始しました」のメッセージが出力されて
> います。
>
>
> しかしながら、何個目かの2のメソッドで例外が発生しても、その前に実行したメソッド
>
> のDB更新がロールバックされません。
>
> TransactionScopeを使用している場合、メソッド内から他のメソッドを呼び出し、その
>
> 中にTransactionScopeがあれば、自動で入れ子になると思うのですが、AOPでトラン
> ザクションを取り込んだ場合には、入れ子にできないのでしょうか?
>
> ご多忙中大変恐縮に存じますが、入れ子にする方法があればご教示ください。
>
>
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


seasar-dotnet メーリングリストの案内