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