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

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 8月 5日 (日) 19:00:22 JST


小林 (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 コンテナの
提供するセッションクラスタリング (レプリケーション) 等を
利用すると同じ問題が発生します.



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