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

亀田一郎 [E-MAIL ADDRESS DELETED]
2007年 6月 6日 (水) 11:42:43 JST


お世話になっています。

07/06/06 に 亀田一郎 <[E-MAIL ADDRESS DELETED]> さんは書きました:
>
> SessionScopeを使って認証チェックを行なうサンプルも作成しましたが、
> その場合は、環境1、環境2とも正常に動作しました。
>
>
> 07/06/06 に Kenji Yamaguchi <[E-MAIL ADDRESS DELETED]> さんは書きました:
> >
> > お世話になります。
> > 山口です。
> >
> > この件、は
> > https://www.seasar.org/issues/browse/TEEDA-305
> > の問題ではないでしょうか?
> > 違っていたらすいません。
> >
> > -----Original Message-----
> > From: [E-MAIL ADDRESS DELETED] [mailto:[E-MAIL ADDRESS DELETED]]
> > On Behalf Of Shinpei Ohtani
> > Sent: Wednesday, June 06, 2007 10:09 AM
> > To: [E-MAIL ADDRESS DELETED]
> > Subject: [Seasar-user:8094]
> > Re:S2ContainerとTeedaのバージョンを変更するとInterceptorにDIされません
> >
> > 大谷です。
> >
> > はずしているかもしれませんが、
> > ・LoginInterceptor2 は本当に動いていますでしょうか?
> > デバッグポイントをあててみてください。
>
> *** LoginInterceptor2をメッセージ出力する様に変更してテストしてみました

public class LoginInterceptor2 implements MethodInterceptor {

...省略...

  public Object invoke(MethodInvocation invocation) throws Throwable {
    System.out.println("LoginInterceptor2...起動");
    …省略…

    }
    return "error";
  }

}

***次の通りメッセージの出力が確認できることで、LoginInterceptor2の起動確認を行いました。

....省略....
DEBUG 2007-06-06 11:16:26,566 [http-8080-Processor25] BEGIN
test.web.logincheck2
.Logincheck2Page#initialize()
##### Start initialize() #####
DEBUG 2007-06-06 11:16:26,566 [http-8080-Processor25] END
test.web.logincheck2.L
ogincheck2Page#initialize() : null
DEBUG 2007-06-06 11:16:26,576 [http-8080-Processor25] HOT deployを終了しました
DEBUG 2007-06-06 11:16:28,819 [http-8080-Processor25] HOT deployを開始します
DEBUG 2007-06-06 11:16:28,879 [http-8080-Processor25] クラス(
test.web.logincheck
2.Logincheck2Page[logincheck2_logincheck2Page])のコンポーネント定義を登録します
DEBUG 2007-06-06 11:16:28,919 [http-8080-Processor25] BEGIN
test.web.logincheck2
.Logincheck2Page#doAuth()
LoginInterceptor2...起動
DEBUG 2007-06-06 11:16:28,919 [http-8080-Processor25] END
test.web.logincheck2.L
ogincheck2Page#doAuth() : error
....省略....


  ・customizer.diconが何かおかしいかもしれません。
>
> *** customizer.diconの内容は次の通りです。


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
 "http://www.seasar.org/dtd/components21.dtd">
<components>
    <component name="maiAspectCustomizer" class="
org.seasar.framework.container.customizer.AspectCustomizer">
        <property name="interceptorName">"s2mai.s2MaiInterceptor"</property>
    </component>

    <component name="maiCustomizer" class="
org.seasar.framework.container.customizer.CustomizerChain">
        <initMethod name="addCustomizer">
            <arg>defaultCustomizer</arg>
        </initMethod>
        <initMethod name="addCustomizer">
            <arg>maiAspectCustomizer</arg>
        </initMethod>
    </component>

  <component name="loginInterceptor"
             class="test.interceptor.LoginInterceptor" />
  <component name="testCustomizer"
             class="
org.seasar.framework.container.customizer.AspectCustomizer">
     <initMethod name="addInterceptorName">
       <arg>"loginInterceptor"</arg>
     </initMethod>
     <property name="useLookupAdapter">true</property>
     <property name="pointcut">"doExecute"</property>
  </component>

  <component name="loginInterceptor2"
             class="test.interceptor.LoginInterceptor2" />

  <component name="testCustomizer2"
             class="
org.seasar.framework.container.customizer.AspectCustomizer">
     <initMethod name="addInterceptorName">
       <arg>"loginInterceptor2"</arg>
     </initMethod>
     <property name="pointcut">"doAuth"</property>
  </component>


  <component name="pageCustomizer"
             class="
org.seasar.framework.container.customizer.CustomizerChain">
    <initMethod name="addCustomizer">
      <arg>pageSupportAspectCustomizer</arg>
    </initMethod>
    <initMethod name="addCustomizer">
      <arg>testCustomizer</arg>
    </initMethod>
    <initMethod name="addCustomizer">
      <arg>testCustomizer2</arg>
    </initMethod>
  </component>





 <component name="defaultCustomizer" class="
org.seasar.framework.container.customizer.AspectCustomizer">
  <property name="interceptorName">"aop.traceInterceptor"</property>
 </component>
 <component name="commandAspectCustomizer" class="
org.seasar.framework.container.customizer.AspectCustomizer">
  <property name="interceptorName">"aop.traceInterceptor"</property>
  <property name="pointcut">"do.*, initialize, prerender"</property>
 </component>
 <component name="actionSupportAspectCustomizer" class="
org.seasar.framework.container.customizer.AspectCustomizer">
  <property
name="interceptorName">"app_aop.actionSupportInterceptor"</property>
  <property name="pointcut">"do.*, initialize, prerender"</property>
 </component>
 <component name="actionCustomizer" class="
org.seasar.framework.container.customizer.CustomizerChain">
  <initMethod name="addCustomizer">
   <arg>commandAspectCustomizer</arg>
  </initMethod>
  <initMethod name="addCustomizer">
   <arg>actionSupportAspectCustomizer</arg>
  </initMethod>
 </component>
 <component name="daoCustomizer" class="
org.seasar.framework.container.customizer.CustomizerChain">
  <initMethod name="addCustomizer">
   <arg>defaultCustomizer</arg>
  </initMethod>
 </component>
 <component name="dtoCustomizer" class="
org.seasar.framework.container.customizer.CustomizerChain">
 </component>
 <component name="dxoCustomizer" class="
org.seasar.framework.container.customizer.CustomizerChain">
  <initMethod name="addCustomizer">
   <arg>defaultCustomizer</arg>
  </initMethod>
 </component>
 <component name="helperCustomizer" class="
org.seasar.framework.container.customizer.CustomizerChain">
  <initMethod name="addCustomizer">
   <arg>defaultCustomizer</arg>
  </initMethod>
 </component>
 <component name="logicCustomizer" class="
org.seasar.framework.container.customizer.CustomizerChain">
  <initMethod name="addCustomizer">
   <arg>defaultCustomizer</arg>
  </initMethod>
 </component>
 <component name="pageSupportAspectCustomizer" class="
org.seasar.framework.container.customizer.AspectCustomizer">
  <initMethod name="addInterceptorName">
   <arg>"aop.traceInterceptor"</arg>
  </initMethod>
  <initMethod name="addInterceptorName">
   <arg>"app_aop.appFacesExceptionThrowsInterceptor"</arg>
  </initMethod>
  <property name="pointcut">"do.*, initialize, prerender"</property>
 </component>

 <component name="serviceCustomizer" class="
org.seasar.framework.container.customizer.CustomizerChain">
  <initMethod name="addCustomizer">
   <arg>defaultCustomizer</arg>
  </initMethod>
 </component>
 <component name="interceptorCustomizer" class="
org.seasar.framework.container.customizer.CustomizerChain">
 </component>
 <component name="validatorCustomizer" class="
org.seasar.framework.container.customizer.CustomizerChain">
 </component>
 <component name="converterCustomizer" class="
org.seasar.framework.container.customizer.CustomizerChain">
 </component>

 </components>



  こちらは見せていただければ何かわかるかもしれません。
> > ・環境2でTeedaやS2の古いjarがWEB-INFの下に残っていたりしませんか?
>
>
/libの内容は以下の通りです
aopalliance-1.0.jar
commons-collections-3.1.jar
commons-el-1.0.jar
commons-fileupload-1.2.jar
commons-io-1.3.1.jar
commons-lang-2.2.jar
commons-logging-1.1.jar
freemarker-2.3.9.jar
geronimo-ejb_2.1_spec-1.0.jar
geronimo-j2ee_1.4_spec-1.0.jar
geronimo-jsp_2.0_spec-1.0.jar
geronimo-jta_1.1_spec-1.0.jar
h2-2007-01-30.jar
hsqldb-1.8.0.1.jar
javaee.jar
javassist-3.4.ga.jar
jstl-1.1.2.jar
log4j-1.2.13.jar
ognl-2.6.7.jar
ozacc-mail-1.1.7.jar
poi-2.5.1-final-20040804.jar
rhino-1.6r2.jar
s2-dao-1.0.40.jar
s2-dao-tiger-1.0.40.jar
s2-extension-2.4.13.jar
s2-framework-2.4.13.jar
s2-tiger-2.4.13.jar
s2mai-0.9.1.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
teeda-xmlunit-0.1.0.jar
tomahawk-1.1.1.jar
xercesImpl-2.6.2.jar
xmlParserAPIs-2.6.2.jar
xmlunit-1.0.jar

  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 mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-user
> >
> >
> > _______________________________________________
> > Seasar-user mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-user
> >
>
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: http://ml.seasar.org/archives/seasar-user/attachments/20070606/b6c426f3/attachment.html 


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