[Seasar-user:11283] Re: [S2Struts]HOT Deploy時にPojoFormを親クラスにキャストしようとした場合にClassCastExceptionが発生
Toshihiro Nakamura
[E-MAIL ADDRESS DELETED]
2007年 10月 25日 (木) 13:47:17 JST
中村(taedium)です。
> web.xmlを送付いたします。
ありがとうございまいした。
web.xmlの設定は問題ありませんでした。
> PojoFormにAbstractクラスを継承し、filter・StrutsのCommand・interceptorなどで
> PojoFormをAbstractクラスにキャストしようとした場合にClassCastExceptionが発生します。
> ※ただし、HOT DeployでTomcatを起動し、リクエストを投げた初回のみにこの現象が見られます。
> また、COOL Deployでは、この現象が再現しませんでした。
SeasarのHotdeploy専用クラスローダでロードしたクラスから
Webコンテナのクラスローダでロードされたクラスへキャスト
しようとして例外になっているようです。
初回のみで発生するのは、初回時にWebコンテナのクラスローダで
ロードされ、それ以降はHot deploy専用クラスローダには
ロードされなくなるからです。
つまり、2回目以降はWebコンテナのクラスローダ内での
キャストになります。
ClassCastExceptionを避けるには、
AbstractPojoFormを継承したコンポーネントを最初から
Hot deploy対象外にしておくのがいいと思います。
app.diconにコンポーネントを明示的に定義しておくと
Hotd eploy対象外になります。
もしくはFilterではなくS2のインターセプタ内で処理するようにしても
いいかもしれません。
この場合はHot deployは有効なままでいけると思います。
--
Nakamura Toshihiro <[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内