[Seasar-user:4529] Re: インターセプターチェインの設定方法について

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2006年 9月 5日 (火) 15:15:16 JST


小林 (koichik) です.

Date:    Tue, 5 Sep 2006 12:13:39 +0900
From:    [E-MAIL ADDRESS DELETED]
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:4522] インターセプターチェインの設定方法について

ちょっと現象から原因が予測できませんが,気になった点だけ.

> 【 2.の場合のdicon全体 】
> 
>   <component name="myActionInterceptor" instance="request" 
>              class="test.action.ActionInterceptor">
>     <aspect pointcut="invoke">lifecycleInterceptor</aspect>
>   </component>
>   <component name="myServiceInterceptor" instance="request" 
>              class="test.service.ServiceInterceptor">
>     <aspect pointcut="invoke">lifecycleInterceptor</aspect>
>   </component>
>   <component name="myDaoInsertInterceptor" instance="request" 
>              class="test.dao.DaoInsertInterceptor">
>     <aspect pointcut="invoke">lifecycleInterceptor</aspect>
>   </component>

これらの instance 属性は prototype にしてください.
request だと,コンテナの初期化時にインスタンスを生成できない
場合もあります.

なお,インターセプタチェインの instance 属性はデフォルト
(singleton) のままで構いません.


最後の【 2.の場合のdicon全体 】では,チェインの記述が
その上の記述と異なり,Dao,Action,Service になっていますが,
その場合はどのような結果になるのでしょうか?
Dao にインターセプタが適用されなくなるのでしょうか?
それとも,Dao のチェインに myDaoInsertInterceptor が適用されて
いないので,Action にインターセプタが適用されなくなるのでしょうか?


問題の切り分けをしたいので,お手数ですが lifecycleInterceptor を
適用しているインターセプタの定義を削除して,

>   <!-- インターセプターチェインの設定 -->
>   <component name="daoInterceptorChain"
>       class="org.seasar.framework.aop.interceptors.InterceptorChain">
>     <initMethod name="add"><arg>traceInterceptor</arg></initMethod>
>     <initMethod name="add"><arg>dao.daoInterceptor</arg></initMethod>
>   </component>
> 
>   <component name="myActionInterceptorChain"
>       class="org.seasar.framework.aop.interceptors.InterceptorChain">
>     <initMethod name="add"><arg>traceInterceptor</arg></initMethod>
>   </component>
> 
>   <component name="myServiceInterceptorChain"
>       class="org.seasar.framework.aop.interceptors.InterceptorChain">
>     <initMethod name="add"><arg>j2ee.requiredTx</arg></initMethod>
>     <initMethod name="add"><arg>traceInterceptor</arg></initMethod>
>   </component>

という設定でどうなるか試して頂けますか?
これで問題がないようだと,やはり lifecycleInterceptor か,
それを適用しているインターセプタの問題ということになるかと
思います.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>




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