[Seasar-user:8094] Re: S2ContainerとTeedaのバージョンを変更するとInterceptorにDIされません

Shinpei Ohtani [E-MAIL ADDRESS DELETED]
2007年 6月 6日 (水) 10:08:55 JST


大谷です。

はずしているかもしれませんが、
・LoginInterceptor2 は本当に動いていますでしょうか?
デバッグポイントをあててみてください。
・customizer.diconが何かおかしいかもしれません。
こちらは見せていただければ何かわかるかもしれません。
・環境2でTeedaやS2の古いjarがWEB-INFの下に残っていたりしませんか?



07/06/06 に 亀田一郎<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 亀田と申します。
> 初めて投稿します。
> 宜しくお願いします。
>
> AOPによる認証チェックのサンプルを作っています。
> S2ContainerとTeedaのバージョンを変更したら、
> プログラムが正常に動作しなくなり、原因が分かりません。
> 皆様のご教示を賜りたく投稿しました。
>
> ■環境1(S2Container-2.4.10とTeeda-1.0.4)
>   s2-extension-2.4.10.jar,s2-framework-2.4.10.jar,s2-tiger-2.4.10.jar
>   teeda-core-1.0.4.jar,teeda-extension-1.0.4.jar,teeda-tiger-1.0.4.jar
>   他多数
>
> ■環境2(S2Container-2.4.13とTeeda-1.0.7)
>  s2-extension-2.4.13.jar,s2-framework-2.4.13.jar,s2-tiger-2.4.13.jar
>  teeda-ajax-1.0.7.jar,teeda-core-1.0.7.jar,teeda-extension-1.0.7.jar,teeda-tiger-1.0.7.jar
>   他多数
>
> ■プログラム構成
>   LoginInterceptor2.java
>   LoginUserDto.java    @Component(instance = InstanceType.SESSION)で
>             セッションに保管
>  login2.html     ---->Login2Page.java
>
> ログオフは@RemoveSession(name="loginUserDto")
>   logincheck2.html---->Logincheck2Page.java
>
> ■テストの概要
>  ・login2.htmlで入力したログイン情報をLogin2Pageでチェックし
>   結果をLoginUserDtoにセットし、セッションに保管します。
>   ・logincheck2.htmlはテスト用htmlで、画面上のsubmitボタンを
>   押下するとLogincheck2PageのdoAuth()メソッドを呼び出します。
>  ・doAuth()メソッドにはAOPが適用されており、LoginInterceptor2が
>   LoginUserDtoのログイン情報をチェックし、認証OKとエラーに
>   対応して画面に遷移します。
>
> ■環境1は正常に動作します。
>
> ■環境2の場合、
>
> 1.LoginInterceptor2にLoginUserDtoがDIされない(null)ため、常に認証エラーになります
>   Logincheck2PageにはDIされます
>   2.Login2PageのログオフでLoginUserDtoがセッションから削除されません
>     @RemoveSession(name="loginUserDto")が利かない
>
> ■ソース
>
> 【LoginInterceptor2】
> package test.interceptor;
>
> … 省略 …
>
> public class LoginInterceptor2 implements MethodInterceptor {
>
>   private LoginUserDto loginUserDto;
>
>   public void setLoginUserDto(LoginUserDto loginUserDto){ this.loginUserDto
> = loginUserDto; }
>
>   public Object invoke(MethodInvocation invocation) throws Throwable {
>
>     if(loginUserDto!=null){
>       if(loginUserDto.isAuthed()){
>           System.out.println("@@@@@@@@@ 前");
>           Object obj = invocation.proceed();
>           System.out.println("@@@@@@@@@ 後");
>           return obj;
>       }
>     }
>     return "error";
>   }
> }
>
> 【LoginUserDto】
> package test.web.dto;
> import org.seasar.framework.container.annotation.tiger.*;
>
> @Component(instance = InstanceType.SESSION)
> public class LoginUserDto {
>   private String userId;
>   private boolean authed;
>   public String  getUserId()                 { return userId;          }
>   public void    setUserId(String userId)    { this.userId = userId;   }
>   public boolean isAuthed()                  { return authed;          }
>   public void    setAuthed(boolean authed)   { this.authed = authed;   }
> }
>
> 【Login2Page】
>
> package test.web.login2;
>
> … 省略 …
>
> public class Login2Page {
>
>   private String  userId;
>   private String  password;
>   private boolean loggedin=true;
>   private String  loginMsg = "初期メッセージ";
>
>   private LoginUserDto loginUserDto;
>
>  … 省略 …(setter/getter)
>
>   public void    setLoginUserDto(LoginUserDto loginUserDto) {
>     this.loginUserDto = loginUserDto;
>   }
>
>   public String doLogin() {
>     System.out.println("#### start doLogin() ####");
>     if(userId.equals("user") && password.equals("user")) {
>       loginUserDto.setAuthed(true);
>       loginUserDto.setUserId(userId);
>       loginMsg = "ログイン成功";
>       loggedin = true;
>       return "success";
>     } else {
>       loginUserDto.setAuthed(false);
>       loginMsg = "ログイン失敗";
>       loggedin = false;
>       return "error";
>     }
>
>   }
>
>   @RemoveSession(name="loginUserDto")
>   public String doLogout() {
>     System.out.println("#### start doLogout() ####");
>     return null;
>   }
>
>   public String prerender() {
>     System.out.println("#### start prerender() ####");
>
>     if(loginUserDto.isAuthed()) {
>       loggedin = true;
>     } else {
>       loggedin = false;
>     }
>     return null;
>   }
> }
>
> 【Logincheck2Page】
>
> package test.web.logincheck2;
>
> … 省略 …
>
> public class Logincheck2Page {
>
> … 省略 …
>
>   private LoginUserDto loginUserDto;
>   public void setLoginUserDto(LoginUserDto loginUserDto){
>     his.loginUserDto = loginUserDto ;
>   }
>
>   public String initialize(){
>     System.out.println("##### Start initialize() #####");
>     statMsg="ログイン承認未済";
>     if(loginUserDto!=null){
>       if(loginUserDto!=null){
>         if(loginUserDto.isAuthed ()){
>           statMsg="ログイン承認済み";
>         }
>       }
>     }
>     return null;
>   }
>   public String doAuth() {
>     System.out.println("##### Start doAuth() #####");
>     return null;
>   }
> }
>
>
>
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>


-- 
=============================
Shinpei Ohtani
[E-MAIL ADDRESS DELETED]
=============================



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