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