[Seasar-user:21119] Re: SAStruts+S2JDBC Function内からcontainer.getComponentした場合に1回だけClassCastExceptionが発生する
泉井透
[E-MAIL ADDRESS DELETED]
2011年 11月 4日 (金) 18:35:55 JST
各位
回答ありがとうございます。
Functionを使わない方向だと、ActionにViewのためだけのロジックが大量に混じりこむため
避けたいのが現状です。
対象のServiceをdiconで逃げる方法で検討してみます。
ありがとうございました。
2011年11月4日10:28 higayasuo <[E-MAIL ADDRESS DELETED]>:
> ひがです。
>
> 小林さんの言う通り、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]>:
>
>> 井上と申しま す。
>>
>> おそらく、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 mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>
>
>
> --
>
> エボルブアイティワークス株式会社
> 泉井 透
> toru izui <[E-MAIL ADDRESS DELETED]>
> http://www.evolveit.jp
> 電話:03-6457-8330
> FAX:03-6457-8331
> 携帯:080-1286-4715
>
>
>
> _______________________________________________
> Seasar-user mailing [E-MAIL ADDRESS DELETED]://ml.seasar.org/mailman/listinfo/seasar-user
>
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>
--
エボルブアイティワークス株式会社
泉井 透
toru izui <[E-MAIL ADDRESS DELETED]>
http://www.evolveit.jp
電話:03-6457-8330
FAX:03-6457-8331
携帯:080-1286-4715
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20111104/63540c07/attachment.html>
Seasar-user メーリングリストの案内