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