[Seasar-user:11379] Re: [S2Struts]HOT Deploy時にPojoFormを親クラスにキャストしようとした場合にClassCastExceptionが発生
Toshihiro Nakamura
[E-MAIL ADDRESS DELETED]
2007年 11月 1日 (木) 14:40:33 JST
中村(taedium)です。
> 「FilterではなくS2のインターセプタ内で処理するようにしてもいいかもしれ
> ません。」
>
> というのはどのような方法でしょうか?ドキュメントを見ているのですが、具体
> 的な設定方法がわかりません。
>
> よろしければ設定例か、参考ドキュメントを教えて下さい。
次のドキュメントが参考になると思います。
http://s2container.seasar.org/2.4/ja/aop.html#OriginalInterceptor
http://s2container.seasar.org/2.4/ja/DIContainer.html#SMARTdeploy
設定例は以下に示します。
まず、SMART deployで認識される
interceptorパッケージにインターセプタのクラスを作成します。
名前はFooInterceptorのように「Interceptor」で終わるようにしてください。
任意の処理をこのインタセプター内で行ってください。
public class FooInterceptor extends AbstractInterceptor {
public Object invoke(final MethodInvocation invocation) throws Throwable {
System.out.println("FOO");
return invocation.proceed();
}
}
インターセプタを作成したら、
インターセプタを特定のコンポーネントに適用するために、
customizer.diconを修正します。
例えば、Pageクラスに適用する場合は次のように記述します。
interceptorNameプロパティには上記で定義したクラスの単純名の
先頭を小文字にしたものを指定します。
<component name="pageCustomizer"
class="org.seasar.framework.container.customizer.CustomizerChain">
<initMethod name="addCustomizer">
<arg>
<component class="org.seasar.framework.container.customizer.AspectCustomizer">
<property name="interceptorName">"fooInterceptor"</property>
<property name="pointcut">"do.*, initialize, prerender"</property>
</component>
</arg>
</initMethod>
</component>
> また、この現象の回避策は、現時点では「部分的にHot Deployを使用しない」
> という結論になるということでよろしいでしょうか?
Filterで扱うようなコンポーネントをHot deploy対象から外すか、
上記のようにインターセプタで扱うかの2つの方法があるということに
なると思います。
--
Nakamura Toshihiro <[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内