[Seasar-user:9630] Re: [teeda] トランザクションの指定について教えてください
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2007年 8月 2日 (木) 10:07:16 JST
小林 (koichik)様
お世話になっております。藤原です。
ご回答ありがとうございます。
御指示して頂いたように修正しました。ログ出力時にコミットかかるようになり
意図する動きにはなったのですが・・・
今度はPageクラスでの例外発生時に「トランザクションをロールバックしました」
の出力がされなくなりました。
DBへも例外発生までの処理がコミットされています。
interceptorCustomizer に
<initMethod name="addCustomizer">
<arg>requiredTxCustomizer</arg>
</initMethod>
を追加するとロールバックされるのですが、この記述追加は正しいでしょうか?
お忙しいところ申し訳ありませんが、よろしくお願いいたします。
[E-MAIL ADDRESS DELETED] wrote on 2007/08/01 18:00:47:
> 小林 (koichik) です.
>
> Date: Wed, 1 Aug 2007 10:45:12 +0900
> From: [E-MAIL ADDRESS DELETED]
> To: [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:9608] [teeda] トランザクションの指定について教えて
ください
>
> > ログ出力のアスペクト処理内でコミットし、Pageクラスの各メソッドで例外が
発生
> > しても
> > ログ出力までRollbackされないようにするには、どの様なトランザクションの
指定
> > を
> > diconファイルに書けばよいのでしょうか?
>
> 現在は pageCustomizer の設定で
>
> <initMethod name="addCustomizer">
> <arg>requiredTxCustomizer</arg>
> </initMethod>
> <initMethod name="addCustomizer">
> <arg>logCustomizer</arg>
> </initMethod>
>
> のような順になっていると思いますが,
> これを逆にして,ログを取得するインターセプタは
> Page に設定するトランザクションの外で動くように
> してください.
>
> ログを出力するインターセプタは
>
> public Object invoke(MethodInvocation invocation) throws Throwable {
> logBefore();
> try {
> invocation.proceed();
> } finally {
> logAfter();
> }
> }
>
> のようにログ出力するメソッドを invoke() から
> 呼び出すようにしておきます.
> # logAfter() の呼び出しは try 〜 catch するのが無難.
>
> そして customizer.dicon に interceptorCustomizer を
> 記述して,
>
> <component name="interceptorCustomizer"
> class="org.seasar.framework.container.customizer.CustomizerChain">
> <initMethod name="addCustomizer">
> <arg>
> <component class="org.seasar.framework.container.customizer.
> AspectCustomizer">
> <property name="interceptorName">"j2ee.requiredTx"</property>
> <property name="pointcut">"log.*"</property>
> <initMethod name="addClassPattern">
> <arg>"root.interceptor"</arg>
> <arg>"LogInterceptor"</arg>
> </component>
> </arg>
> </initMethod>
> </component>
>
> のようにすることで,log〜() メソッドに
> トランザクションが適用されます.
> このトランザクションは Page に設定される
> トランザクションの外なので独立した
> トランザクションになります.
>
>
>
> --
> <signature>
> <name>Koichi Kobayashi</name>
> <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
> </signature>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
Seasar-user メーリングリストの案内