[Seasar-user:18709] Re: [S2DBCP] DB再起動後のコネクション取得について

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2009年 10月 21日 (水) 02:30:00 JST


小林 (koichik) です.

Date:    Wed, 21 Oct 2009 00:26:41 +0900
From:    takiguchi <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:18706] Re: [S2DBCP] DB再起動後のコネクション取得について

> > それ以前に,例えば prepareStatement() 等で
> > 本来のコネクションが例外をスローすると,
> > ConnectionWrapperImpl#release() 経由で
> > ConnectionPoolImpl#release() が呼ばれ,
> > コネクションはプールから除去されます.
> ここですが、デバッガで追ったとき prepareStatement() は例外にならず、
> その後の executeQuery() で例外になっていました。

Connection オブジェクトからは例外がスロー
されないわけですね.
それだとコネクションが死んでいるという判断が
できないのでコネクションはプールに戻されます.

とりあえずは validationInterval を短く設定する
くらいしか回避策はない気がします.

抜本的に解決するなら XAConnection と
ConnectionEventListener を使って障害を
検知する必要があると思いますが,S2DBCP で
対応するのは修正量を考えると避けたいところです.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



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