[Seasar-user:2925] Re: コネクションプーリングの設定と動作

Hikaru Taniguchi taniguchi
2005年 11月 24日 (木) 16:19:56 JST


たにぐちです。

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