[Seasar-user:17409] Re: [S2Container] エンハンスされたコンポーネントがセッションに格納できない
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2009年 5月 11日 (月) 18:00:37 JST
小林 (koichik) です.
Date: Mon, 11 May 2009 11:08:00 +0900
From: Tomoyuki Kano <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:17403] Re: [S2Container] エンハンスされたコンポーネントがセッションに格納できない
> > このために、 AOP でエンハンスされたコンポーネントのインスタンスが
> > セッションに含まれていた場合、Hotdeplyではデシリアライズできずに
> > 破棄されてしまうようになったかと思います。
>
> すみません。AOPされたHotdeployなコンポーネントはセッションに
> 格納できないのがふつうな様な気もします。であれば無視して下さい。
AOP を適用したクラスは事実上 Serializable では
なくなる (別プロセスでデシリアライズ不可) ので,
HOT deploy に限らず問題になる可能性があります.
クラスタリングやセッションレプリケーションを
しているケース,ServletContext で別 Web アプリと
共有するケースなど.
よって,Dto には AOP を適用しない方が無難です.
[Seasar-user:17402]
> > Dto等をセッションに格納して使い回す場合に、traceInterceptor を摘要
> > していて、この現象に気がつきました。
> >
> > AOP しなければ問題ないのでなんとかはなるのですが、後方互換性にも
> > 絡むような気がしますし、不自由な側面も多いので、報告いたします。
Seasar2.4.35 の変更以前だと,デシリアライズできない
ケースでは元のオブジェクトがそのまま返されるために
ClassCastException が発生して前に進むことが
できなくなります.
そのため,この点で後方互換性の問題はないです.
# Filter を使った場合の問題はありますが.
--
<component name="koichik">
<property name="fullName">"Koichi Kobayashi"</property>
<property name="email">"[E-MAIL ADDRESS DELETED]"</property>
<property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>
Seasar-user メーリングリストの案内