[Seasar-user:15279] CoolDeployモードで@Componentアノテーションを使用した時の挙動
黒川博之
[E-MAIL ADDRESS DELETED]
2008年 8月 6日 (水) 10:16:42 JST
おはようございます。
SAStrutsで、ログイン認証用のActionとActionFormを作り、
ActionFromをセッションに設定しています。
【ログイン用のActionFrom】
@Component(instance = InstanceType.SESSION)
public class LoginForm implements Serializable {
private static final long serialVersionUID = 1L;
public String userName;
public String passWord;
}
ログイン用のActionでは、userName/passWordが未入力の場合
エラーとしています。
【ログイン用Action】
public class LoginAction {
@Resource
@ActionForm
protected LoginForm loginForm;
@Execute(validator = false)
public String index() {
return "login.jsp";
}
@Execute(validate = "validateLogin", input = "login.jsp")
public String login() {
System.out.println(loginForm.userName);
System.out.println(loginForm.passWord);
return "/employee?redirect=true";
}
public ActionErrors validateLogin() {
ActionErrors errors = new ActionErrors();
if (loginForm.userName.length() == 0) {
errors.add("userName", new
ActionMessage("errors.login.userName"));
}
if (loginForm.passWord.length() == 0) {
errors.add("passWord", new
ActionMessage("errors.login.passWord"));
}
return errors;
}
}
ログイン成功後、別のAction(EmployeeAction)にリダイレクトしているのですが
そのActionでは、独自に作ったLoginInterceptorをアスペクトしています。
【独自Interceptor】
public class LoginInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = 1L;
@ActionForm
public LoginForm loginForm;
public Object invoke(MethodInvocation invocation) throws Throwable {
System.out.println("ログインしているか検証します。");
System.out.println(loginForm.userName);
System.out.println(loginForm.passWord);
if ((loginForm.userName != null) || (loginForm.passWord != null)) {
System.out.println("OKです");
return invocation.proceed();
}
System.out.println("NGです");
return "/login?redirect=true";
}
}
【リダイレクト先のアクション】
@Aspect("loginInterceptor")
public class EmployeeAction {
@Execute(validator = false)
public String index() {
return "index.jsp";
}
}
このような構成で、
・HotDeploy
・WarmDeploy
では問題なくEmployeeActionへリダイレクトされるのですが、CoolDeploy時には
LoginActionで取得したuserName/passWordがnullとなってしまいます。
CoolDeployでは、サーバー起動時に全てのコンポーネントをdeployしているようですが
これが原因なのでしょうか?
また、何か解決策はありますでしょうか?
長くなりましたが、よろしくお願いします。
【環境】
s2-framework-2.4.26.jar
s2extension-2.4.26.jar
s2-tiger-2.4.26
sa-struts-1.0.3-rc1.jar
Seasar-user メーリングリストの案内