[Seasar-user:21109] Re: SAStruts+S2JDBC Function内からcontainer.getComponentした場合に1回だけClassCastExceptionが発生する
Manabu Inoue
[E-MAIL ADDRESS DELETED]
2011年 11月 2日 (水) 01:02:39 JST
井上と申します。
おそらく、Hot Deployを使用されていると思います。
私も過去にハマって調べた結果、原因や対策を以下に書きました。
ご参考になれば。
http://d.hatena.ne.jp/learn/20090318/p1
なお、対策として幾つか書いています(書いているもの以外にリフレクションを
使う方法もあります)が、
http://ml.seasar.org/archives/seasar-user/2009-February/016916.html
や、ひがさんからコメントいただいているように、
基本的には案2のSmart Deploy対象外クラスから対象クラスを参照しないように
するのが無難と思います。
(11/11/01 23:18), 泉井透 wrote:
> こんにちは。
>
> JSPからEL式使ってFunctionを呼び出していますが、そのFunction内の処理にて
>
> final S2Container container = SingletonS2ContainerFactory.getContainer();
> HogeService hogeService = container.getComponent(HogeService.class);
>
> を実行してServiceクラスを通じてDBにアクセスしようとしていますが、下記の
> ようにClassCastExceptionが発生します。
> (getComponentの結果が、HogeServiceのインスタンスでない?)
> java.lang.ClassCastException:
> jp.xxx.xxx.service.HogeService$$EnhancedByS2AOP$$8ee5c0 cannot be cast
> to jp.xxx.xxx.service.HogeService
>
> 発生するのは起動後、初回の1回のみで、再度そのページを実行すると同じロ
> ジックが成功します(予定通り動作する)
>
> ちなみに、Functionを使用しているJSPに対するAction内では、普通にServiceを
> DIして使用していますが特に問題は発生していません。
>
> どなたか心当たりがある方、解決方法を教えてください。
> よろしくお願いします。
>
> --
>
> エボルブアイティワークス株式会社
> 泉井 透
> toru izui <[E-MAIL ADDRESS DELETED] <mailto:[E-MAIL ADDRESS DELETED]>>
> http://www.evolveit.jp <http://www.evolveit.jp/>
>
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
Seasar-user メーリングリストの案内