[Seasar-user:6383] Re: 【S2Struts/Seasar】HOT DEPLOY時に ClasCastException
Yasuo Higa
[E-MAIL ADDRESS DELETED]
2007年 2月 27日 (火) 17:49:50 JST
ひがです。
> 原田です。
>
> たびたびすみません。
>
> 現在SMART DEPLOY環境への移行時だということもあり、
> HOT DEPLOYされるクラス群とされないクラス群があるのですが、
> HOT DEPLOY時に、HOT DEPLOYされないクラスで、HOT DEPLOYされるクラスのコンポーネントを
>
> **** = (****)SingletonS2ContainerFactory.getContainer().getComponent(****.class);
>
> のように取得すると、ClasCastExceptionが出てしまいます。
>
> DIされる前のクラスを指定して、DIされたクラスが帰ってきて、実はDI前のクラスじゃないから
> エラーになっているような感じです。
>
> まぁそういうクラスはHOT DEPLOYパッケージへ移動すればいいのですが、
> コンポーネント名が変わってしまったりするので、いろいろ大変なのです。
>
> 何か避ける方法はありませんか?
現状だと残念ながらありません。
HOTコンポーネントからHOTじゃないコンポーネントは参照できますが、
その逆はできません。
なぜならHOTなコンポーネントはリクエストのたびに
違うクラスになっているためです。
もうちょっと(?しばらく先かも)するとAutoRegisterしたクラスも
diconに登録したクラスもすべてHOTで扱えるようになるはずなので、
HOTとHOT以外で悩むこともなくなるかも。
Yasuo Higa
The Seasar Project
Seasar-user メーリングリストの案内