[Seasar-user:2928] Re: コネクションプーリングの設定と動作(解決)
sato
sato
2005年 11月 24日 (木) 17:48:54 JST
NSQ@佐藤です。
たにぐち さん、ひが さん、佐藤匡剛 さん。
問題が解決しました。
ありがとうございます。
たにぐちさんの指摘の通り、ServerControllerで要求がある毎にコンストラクタ
でコンテナを構築している箇所が問題でした。
コンストラクタでコンテナおよびDAOを取得している箇所を修正する事により、
期待通りの動作をするようになりました。
>たにぐちです。
>
>原因は ServerControllerの constructorにありますね。
>S2Containerを要求ごとに diconファイルから構築しているので、結局のとこ
>ろVM空間上に複数のコンポーネントセットが存在することになります。
>
>ということは、DataSourceもConnectionPoolも複数あるので、ログにあるよう
>な動きになります。
>
>S2の挙動というよりかは、DIの適用パターンにあわせて設計・動きを少し変更
>されたほうがよろしいかと思います。
>
>私なら以下の方法を使います
>
> 1. EditLogic が xxxDao を使う(必須)のであれば EditLogicのコンストラ
> クタに引数を追加し、default constructorを削除する。
> これは
> public EditLogic(xxxDao dao) {
> this.dao = dao;
> }
> のようにする
> 2. EditLogicは diconに定義する(か、自動登録されるような規則に従った
> 上でAutoRegisterを使う)
> これでEditLogicのインスタンス管理はコンテナのもとにあります
> 3. EditLogicが必要な部分は S2を経由してインスタンスを取得するように
> します。たとえば、EditLogicが StrutsのActionなのであれば S2Struts
> を用います.
> new EditLogic() している場所を getComponent(EditLogic.class) のよ
> うにすればいいかと思いますが、この方法を用いるのであればインタフェー
> スと実装クラスに分離したほうが良いです。
> (S2JSFの場合は特に意識する必要すらないと思います)
>
>ではでは
>
># (別件)
># requiredTxを一箇所のみに定義して全体に反映したい、ということでしたら
># AutoAspect...とか InterceptorChain とかを使うといいと思いますよ
まだ使い方が良く分かっていませんが、教えていただいた方法について勉強した
いと思います。
ありがとうございます。
>
>--
>Hikaru Taniguchi <[E-MAIL ADDRESS DELETED]>
>_______________________________________________
>Seasar-user mailing list
>[E-MAIL ADDRESS DELETED]
>http://lists.sourceforge.jp/mailman/listinfo/seasar-user
=======================================================
Seasar-user メーリングリストの案内