[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 メーリングリストの案内