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