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