[Seasar-user:21112] Re: SAStruts+S2JDBC Function内からcontainer.getComponentした場合に1回だけClassCastExceptionが発生する

泉井透 [E-MAIL ADDRESS DELETED]
2011年 11月 2日 (水) 16:12:12 JST


井上さま
有力な情報ありがとうございます。

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
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20111102/3d340ac5/attachment.html>


Seasar-user メーリングリストの案内