http://d.hatena.ne.jp/j5ik2o/20070223/1172204878
の独自インターセプタを作るという部分で,Aspectアノテーションを使ってLoginInterceptorを割り当てていたのですが,これはHOT deploy時しか正常に動作しないことに気付きました...orz
public class TopPage { // ページを開くとき一度だけ呼ばれるメソッド。 // このメソッドにLoginInterceptorを割り当てて認証チェックさせます。 @Aspect("LoginInterceptor") public String initialize() { return null; } }
Seasar-user MLでid:koichikさんにアドバイスをいただきなんとかCOOL deployで動作できるようになりました.
で,COOL deployでもちゃんと動作するようにするには,Aspectアノテーションを削除して(Aspectアノテーションで指定してしまうとLoginInterceptorがシングルトンになるんでしょうね.きっと),customize.diconに以下の設定を追加します.
<component name="loginAspectCustomizer" class="org.seasar.framework.container.customizer.AspectCustomizer"> <property name="useLookupAdapter">true</property> <property name="pointcut">"initialize"</property> <property name="interceptorName">"loginInterceptor"</property> <initMethod name="addClassPattern"> <arg>"jp.grandtech.app.web"</arg> <arg>".*Page"</arg> </initMethod> <initMethod name="addIgnoreClassPattern"> <arg>"jp.grandtech.app.web"</arg> <arg>".*LoginPage"</arg> </initMethod> </component> <component name="pageCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain"> <initMethod name="addCustomizer"> <arg>loginAspectCustomizer</arg> </initMethod> <initMethod name="addCustomizer"> <arg>pageSupportAspectCustomizer</arg> </initMethod> </component>
まず,loginInterceptor用のカスタマイザ loginAspectCustomizerの設定を作ります.
ここでは,useLookupAdapterがtrueになるように設定し,pageCustomizerのチェインに,loginAspectCustomizerを追加するようにします.
これで,HOT deployだけでなく,COOL deployでも正常に動作可能になります.