[Seasar-user:16351] Re: sessionスコープのコンポーネント内に保存したデータ内容が一部消失することがある
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2008年 11月 20日 (木) 20:00:05 JST
小林 (koichik) です.
Date: Thu, 20 Nov 2008 18:37:18 +0900
From: "大屋茂士将" <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:16348] sessionスコープのコンポーネント内に保存したデータ内容が一部消失することがある
> diconファイルでセッションスコープにコンポーネントを登録しており、
> Actionのフィールドに@Resourceを指定してインジェクションしています。
> インジェクションされるコンポーネントは内部的にMapを保持し、そのMapにArrayListとFormを保存しています。
> Form自体はrequestスコープですが、保管の際クローンを作成して保存しています。
>
> このようなAction内で画面遷移を行うとインジェクションされているコンポーネントのインスタンスが入れ替わることがあります。
HOT deploy では,セッションからオブジェクトを
取り出す際に新しいクラスローダの元でロードされた
クラスのインスタンスとして再構築 (シリアライズ・
デシリアライズ) を行うためでしょう.
これは COOL deploy では行われません.
> ・HOT deploy時
> 消失するケースと、消失しないケースがあります。
> ただし、同じコードであれば同じ結果になります。
>
> 以上のように再現の条件が特定できず、原因がつかめておりません。何かしらヒントが欲しい状況です。
セッションに保持されるオブジェクトは Serializable で
なくてはなりません.
セッションスコープのコンポーネントやその Map に
追加される Form や ArrayList に追加されるオブジェクトが
全て Serializable を実装しているか確認してみては
いかがでしょうか.
--
<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 メーリングリストの案内