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