[Seasar-user:21223] Re: env.txtファイルがCT→productに変更すると、セッション情報を失う

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2011年 12月 20日 (火) 20:20:35 JST


小林 (koichik) です.

インターセプタはデフォルトでシングルトンなので,COOL では
S2 コンテナの初期化時,つまり Web コンテナ (Tomcat 等) の起動時に
インスタンス化されます.その時点ではセッションは存在しないので,
インターセプタにはDTO は設定されません.
そしてそのインスタンスがずっと使われます.

インターセプタがリクエスト毎に生成されるようにするには,
customizer.dicon で以下のように useLookupAdapter に true を
指定してください.

<component name="actionCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain">
  <initMethod name="addAspectCustomizer">
    <arg>"hogeInterceptor"</arg><!-- interceptorName -->
    <arg>"do.*"</arg>           <!-- pointcut -->
    <arg>true</arg>             <!-- useLookupAdapter -->
  </initMethod>
</component>

または

<component name="actionCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain">
  <initMethod name="addCustomizer">
    <arg>
      <component class="org.seasar.framework.container.customizer.AspectCustomizer">
        <property name="interceptorName">"hogeInterceptor"</property>
        <property name="pointcut">"do.*"</property>
        <property name="useLookupAdapter">true</property>
      </component>
    </arg>
  </initMethod>
</component>

http://s2container.seasar.org/2.4/ja/DIContainer.html#useLookupAdapter



Date: Tue, 20 Dec 2011 19:59:47 +0900
From: jingyu li <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:21222] Re: env.txtファイルがCT→productに変更すると、セッション情報を失う

> 小林 様
> 
> ご回答通りにやってみましたが、やっぱりセッションDTOの値を取得できません。
> 
> 今はLoginする時、Loginのユーザ情報をセッションDTOに格納して、Actionのインターセプタを使って、Actionのインターセプタ
> 中にセッションDTOを取得する。取得できない場合、ログイン画面に遷移するとの処理です。
> 
> 
> Hotの場合、ぜんぜん問題ないですが。Coolに変更すると、セッションDTOが空白になってしまいました。
> 
> 
> 何か設定など間違いでしょか?
> 
> 以上、よろしくお願い致します。
> 
> 
> 
> 
> 2011年12月19日20:51 jingyu li <[E-MAIL ADDRESS DELETED]>:
> 
> > 小林 様
> >
> > ご回答ありがとうございました。
> >
> > 以下のようにテストしてみます。
> >
> > ありがとうございます。
> >
> >
> > 2011年12月19日20:15 Koichi Kobayashi <[E-MAIL ADDRESS DELETED]>:
> >
> > 小林 (koichik) です.
> >>
> >> セッションに保持する Dto は Serializable にしておくべきです。
> >>
> >> 取得できないのは、HOT の時に保存した情報が残っているせいでは
> >> ないでしょうか?
> >> Eclipse + Sysdeo Tomcat Plugin の場合はプロジェクト直下の
> >> work ディレクトリに sessions.ser (だったかな) とかいう
> >> ファイルがあるかもしれないので、それを削除してください。
> >> あるいは、ブラウザでクッキーを削除して新しいセッション ID が
> >> 割り振られるようにしてみてください。
> >>
> >>
> >> Date: Mon, 19 Dec 2011 19:38:23 +0900
> >> From: jingyu li <[E-MAIL ADDRESS DELETED]>
> >> Subject: [Seasar-user:21219] Re: env.txtファイルがCT→productに変更すると、セッション情報を失う
> >>
> >> > 小林 様
> >> >
> >> > お世話になっております。李です。
> >> >
> >> > ご回答ありがとうございます。
> >> >
> >> > # 具体的には HOT の場合、セッションに設定されたオブジェクトを
> >> > # バイト列にシリアライズしてセッションに保持します。
> >> > # COOL ではそういうことはしません。
> >> >
> >> > ct:
> >> > public class UserDto implements Serializable {
> >> >
> >> >     private static final long serialVersionUID = 1L;
> >> >
> >> > ↓↓↓↓
> >> >
> >> > product:
> >> > public class UserDto  {
> >> >
> >> >
> >> >
> >> > 以上のように変更するんですが、まだセッション情報が取得できません。
> >> > ご教授お願い致します。
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> > 2011年12月19日17:59 Koichi Kobayashi <[E-MAIL ADDRESS DELETED]>:
> >> >
> >> > > 小林 (koichik) です.
> >> > >
> >> > > env.txt が ct だと HOT deploy になりますが、その場合は
> >> > > セッション情報の持ち方が env.txt が product 等の場合の
> >> > > COOL deloy とは異なるため、セッションを引き継ぐことは
> >> > > できません。
> >> > > # 具体的には HOT の場合、セッションに設定されたオブジェクトを
> >> > > # バイト列にシリアライズしてセッションに保持します。
> >> > > # COOL ではそういうことはしません。
> >> > >
> >> > >
> >> > > Date: Mon, 19 Dec 2011 16:56:58 +0900
> >> > > From: jingyu li <[E-MAIL ADDRESS DELETED]>
> >> > > Subject: [Seasar-user:21211] env.txtファイルがCT→productに変更すると、セッション情報を失う
> >> > >
> >> > > > お世話になっております。リと申します。
> >> > > >
> >> > > > 開発環境で、env.txtファイルがct→productに変更すると、セッション情報を失うことになってしまいました。
> >> > > > それは何が問題なのでしょうか?
> >> > > >
> >> > > > Framework以下のようになります。
> >> > > >
> >> > > > SaStruts2.4
> >> > > > Tomcat 6
> >> > > >
> >> > > > 以上、よろしくお願い致します。
> >> > >
> >> > > --
> >> > > {
> >> > >  name: "Koichi Kobayashi",
> >> > >  mail: "[E-MAIL ADDRESS DELETED]",
> >> > >  blog: "http://d.hatena.ne.jp/koichik/",
> >> > >  twitter: "@koichik"
> >> > >  }
> >> > >
> >> > > _______________________________________________
> >> > > Seasar-user mailing list
> >> > > [E-MAIL ADDRESS DELETED]
> >> > > https://ml.seasar.org/mailman/listinfo/seasar-user
> >> > >
> >>
> >> --
> >> {
> >>  name: "Koichi Kobayashi",
> >>  mail: "[E-MAIL ADDRESS DELETED]",
> >>  blog: "http://d.hatena.ne.jp/koichik/",
> >>  twitter: "@koichik"
> >>  }
> >>
> >> _______________________________________________
> >> Seasar-user mailing list
> >> [E-MAIL ADDRESS DELETED]
> >> https://ml.seasar.org/mailman/listinfo/seasar-user
> >>
> >
> >

--
{
  name: "Koichi Kobayashi",
  mail: "[E-MAIL ADDRESS DELETED]",
  blog: "http://d.hatena.ne.jp/koichik/",
  twitter: "@koichik"
 }



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