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