[Seasar-user:18269] Re: [S2DBCP,S2DAO] DB(Oracle側)のエラーでコネクションクローズに至った場合再取得について

尾藤 浩嗣 [E-MAIL ADDRESS DELETED]
2009年 8月 12日 (水) 20:27:54 JST


びとうです。

ありがとうございます。

> ちなみに,DB サーバとの間にファイアウォールが
> あったりしないでしょうか?
> その場合,S2DBCP のアイドル時間を適切に設定しないと
> ファイアウォールによってコネクションが切断されやすく
> なります.
DBサーバと、アプリケーションサーバ(WebSphere)は同一サーバ
内なので、ネットワーク的な問題の可能性は低いのですが、
DB(Oracle11g)が、ごく稀に内部エラーを起こして例外に至ります。

-以上-

Koichi Kobayashi さんは書きました:
> 小林 (koichik) です.
> 
> Date:    Wed, 12 Aug 2009 18:49:40 +0900
> From:    尾藤 浩嗣 <[E-MAIL ADDRESS DELETED]>
> To:      [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:18265] [S2DBCP,S2DAO] DB(Oracle側)のエラーでコネクションクローズに至った場合再取得について
> 
>> S2DAOだけでなく、DBCPに関連するかもしれませんが、DBとのコネクション
>> が上記の様に例外によりクローズした場合、DBCPやS2DAOは、その
>> JDBC Connectionのインスタンスをこれ以上使用できないものとして
>> いつかのタイミングで解放する動作をするでしょうか?
> 
> します.
> S2DBCP では,例外が発生したコネクションは
> 即座にクローズして,プールに戻すことは
> ありません.
> 
>>   SQLException I/O例外です。パイプが切断されました。
>>   SQLException クローズされた接続です。
>>
>> という例外が発生したのは、S2DAOを用いて(内部的にはPreparedStatement
>> が使われていると認識しています)DML文を発行した結果でした。
>> つまり、Connectionのメソッド呼び出しではなく、PreparedStatementの
>> メソッド呼び出し時の例外に対し、S2DBCPは、Connectionをクローズする
>> でしょうか?
> 
> どちらということもなく,「例外が発生したとき」です.
> 上記のような現象は Connection#prepareStatement() で
> 例外が発生しなかったのではないでしょうか.
> 
> ちなみに,DB サーバとの間にファイアウォールが
> あったりしないでしょうか?
> その場合,S2DBCP のアイドル時間を適切に設定しないと
> ファイアウォールによってコネクションが切断されやすく
> なります.
> 
> また,以下のドキュメントにある validationQuery
> および validationInterval を設定すると,プールから
> 取得したコネクションが生きているか検証するように
> なります.
> 
> http://s2container.seasar.org/2.4/ja/jdbc.html
> 
> 





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