[Seasar-user:21118] Re: SAStruts+S2JDBC Function内からcontainer.getComponentした場合に1回だけClassCastExceptionが発生する
higayasuo
[E-MAIL ADDRESS DELETED]
2011年 11月 4日 (金) 10:28:08 JST
ひがです。
小林さんの言う通り、FunctionでServiceを呼ばないようにするのがいいと思い
ますが、
どうしても呼び出さなければいけないときは、getComponent()をObjectで受けて、
リフレクションで値を取れば、一応大丈夫です。
> 井上さま
> 有力な情報ありがとうございます。
>
> CoolDeployで試したところ、エラーが出なくなったので同じ現象だと確認でき
> ました。
>
> 対策案ですが、案2だと同じクラスが違うパッケージに2個できるということ
> ですよね?
> 特に私の場合、Serviceを2つ作ることになるので、同じ業務ロジックが2か
> 所に存在することになり
> とても避けたい状況です。
>
> 案3,4は、Serviceのクラスが大量に存在するため、そのために設定ファイルを
> 避けたいというのが本音です。
> HotDeploy対象とならないというのも、開発の効率を考えると避けたいです。
>
> ですので、案1の方法が一番スマートに感じるのですが、
> すべてのクラスをSmart Deploy対象にするというのは、結構複雑な問題なので
> しょうか?
> 何か情報をお持ちであれば教えて頂ければ幸いです。
>
> よろしくお願いします。
>
> 2011年11月2日1:02 Manabu Inoue <[E-MAIL ADDRESS DELETED]
> <mailto:[E-MAIL ADDRESS DELETED]>>:
>
> 井上と申しま す。
>
> おそらく、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]>
> <mailto:[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] <mailto:[E-MAIL ADDRESS DELETED]>
> > https://ml.seasar.org/mailman/listinfo/seasar-user
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED] <mailto:[E-MAIL ADDRESS DELETED]>
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>
>
>
> --
>
> エボルブアイティワークス株式会社
> 泉井 透
> toru izui <[E-MAIL ADDRESS DELETED] <mailto:[E-MAIL ADDRESS DELETED]>>
> http://www.evolveit.jp <http://www.evolveit.jp/>
> 電話:03-6457-8330
> FAX:03-6457-8331
> 携帯:080-1286-4715
>
>
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20111104/3bfc005a/attachment.html>
Seasar-user メーリングリストの案内