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