[Seasar-user:11376] Re: [S2Struts]HOT Deploy時にPojoFormを親クラスにキャストしようとした場合にClassCastExceptionが発生

nobu [E-MAIL ADDRESS DELETED]
2007年 11月 1日 (木) 12:57:28 JST


近藤(nobu)です。

横から失礼します。私の方でも同様の現象が発生しております。
※S2Strutsは使用していません。Servlet内で(おそらく)同様の事を行っています。

対処方法のうちの、

「FilterではなくS2のインターセプタ内で処理するようにしてもいいかもしれ
ません。」

というのはどのような方法でしょうか?ドキュメントを見ているのですが、具体
的な設定方法がわかりません。

よろしければ設定例か、参考ドキュメントを教えて下さい。

また、この現象の回避策は、現時点では「部分的にHot Deployを使用しない」
という結論になるということでよろしいでしょうか?

以上、よろしくお願い致します。



Toshihiro Nakamura さんは書きました:
> 中村(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は有効なままでいけると思います。




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