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