[Seasar-user:15293] Re: CoolDeploy モードで@Componentアノテーションを使用した時の挙動
黒川博之
[E-MAIL ADDRESS DELETED]
2008年 8月 7日 (木) 07:56:47 JST
小林様
> Interceptor に Interceptor を適用しては
> いけません.(^^;
> 設定は actionCustomizer に記述してください.
今まで、Doltengやブランクプロジェクトで自動的に作成された
customizer.diconをいじった事が無かったので、意味不明に
なっていました・・・^^;;
> <component name="actionCustomizer" class="...">
> <initMethod name="addAspectCustomizer">
> <arg>"loginInterceptor"</arg>
> <arg>true</arg>
> </initMethod>
> </component>
上記記述を追加して、LoginInterceptorを以下のように変更しました。
*LoginActionかどうかの判断ロジックを追加
public class LoginInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = 1L;
@Resource
protected LoginForm loginForm;
public Object invoke(MethodInvocation invocation) throws Throwable {
System.out.println("ログインしているか検証します。");
System.out.println(loginForm.userName);
System.out.println(loginForm.passWord);
if (super.getTargetClass(invocation) == LoginAction.class) {
System.out.println("LoginActionなので、OKです。");
return invocation.proceed();
}
if ((loginForm.userName != null) || (loginForm.passWord != null)) {
System.out.println("OKです");
return invocation.proceed();
}
System.out.println("NGです");
//ログイン画面にリダイレクト
return "/login?redirect=true";
}
}
addIgnoreClassPatternで、LoginActionを追加しようともしましたが
そうすると、LoginAction自体に他のaspectも設定されなくなってしまう
ため、上記のように変更しました。
この方法が一番妥当でしょうか?
なお、これでHot/Warm/Cool全て同一の動きをしてくれました。
よろしくお願いします。
----- Original Message -----
From: "Koichi Kobayashi" <[E-MAIL ADDRESS DELETED]>
To: <[E-MAIL ADDRESS DELETED]>
Sent: Wednesday, August 06, 2008 4:45 PM
Subject: [Seasar-user:15287] Re: CoolDeploy モードで@Componentアノテーションを使用した時の挙動
> 小林 (koichik) です.
>
> Date: Wed, 6 Aug 2008 16:27:14 +0900
> From: 黒川博之 <[E-MAIL ADDRESS DELETED]>
> To: <[E-MAIL ADDRESS DELETED]>
> Subject: [Seasar-user:15286] Re: CoolDeploy モードで@Componentアノテーションを使用した時の挙動
>
>> 以下のように設定しましたが、loginInterceptorをアスペクトしているActionクラスの
>>
>> index()で、java.lang.StackOverflowErrorが発生してしまいました。
> (略)
>> ・customizer.dicon
>> <!--以下を追加-->
>> <component name="interceptorCustomizer"
> ^^^^^^^^^^^
> Interceptor に Interceptor を適用しては
> いけません.(^^;
> 設定は actionCustomizer に記述してください.
>
> なお,
>
> <component name="actionCustomizer" class="...">
> <initMethod name="addAspectCustomizer">
> <arg>"loginInterceptor"</arg>
> <arg>true</arg>
> </initMethod>
> </component>
>
> という記述でも同じ設定になります.
>
>
> --
> <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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
Seasar-user メーリングリストの案内