[Seasar-user:9682] Re: [teeda]Hot Deploy時にServletRequestMapのNotSerializableExceptionが発生してしまう

takemura [E-MAIL ADDRESS DELETED]
2007年 8月 5日 (日) 22:46:06 JST


小林さん

竹村です。


> そんなわけで (どんなわけで?),AbstractBasePage は
> Serializable を implements してください.

AbstractBasePageにSerializable を implementsしたのですが
状況は変わりませんでした。一応各PageもSerializable を implements
しましたがそれでも同じエラーが出てしまいます。

エラーの内容が
理由はjava.io.NotSerializableException:
org.seasar.framework.container.external.servlet.ServletRequestMap

となってますのでServletRequestMapクラスが
Serializable を implementsしてないから起こるのではないでしょうか。












Koichi Kobayashi さんは書きました:
> 小林 (koichik) です.
> 
> Date:    Sun, 05 Aug 2007 16:55:27 +0900
> From:    takemura <[E-MAIL ADDRESS DELETED]>
> To:      [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:9677] [teeda]Hot Deploy時にServletRequestMapのNotSerializableExceptionが発生してしまう
> 
>> 各Pageクラスは上記のクラスを継承して作っているのですが
>> Hot Deployモードで動作しているときにdo〜メソッドで他の
>> Pageクラスに画面遷移するとIORuntimeExceptionが発生してしまいます。
> 
> 画面遷移した際に状態を引き継げるようにするため,
> Teeda は Page クラスのインスタンスをセッションに
> 保持します.
> そんなわけで (どんなわけで?),AbstractBasePage は
> Serializable を implements してください.
> 
> HOT deploy ではリクエスト毎にクラスローダが
> 切り替わり,一見同じ Page クラスであっても,
> セッションに保持されている Page クラスと,
> 現在のクラスローダからロードされた Page クラスは
> 別のクラスとなってしまいます.
> 
> この問題を回避するため,HOT deploy ではセッションから
> オブジェクトを取り出す際に,現在のクラスにデシリアライズ
> しているのでこの問題が発生 (発見) しやすくなりますが,
> COOL deploy でも DB Session を使った場合や,Web コンテナの
> 提供するセッションクラスタリング (レプリケーション) 等を
> 利用すると同じ問題が発生します.
> 
> 
> 




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