[seasar-s2dao-dev:679] DB(Oracle側)のエラーでコネクションクローズに至った場合再取得について
尾藤 浩嗣
[E-MAIL ADDRESS DELETED]
2009年 8月 10日 (月) 16:08:39 JST
びとうと申します。
S2DAOを使っている場合の、DBとのコネクションの管理について質問です。
環境は、WebSphere 6.1, Oracle 11g, s2-dao-1.0.48 を使っています。
j2ee.dicon では、
<component name="xaDataSource"
class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
<property name="driverClassName">
"oracle.jdbc.driver.OracleDriver"
</property>
<property name="URL">
"jdbc:oracle:thin:@hostname1521:servicename"
</property>
<property name="user">"username"</property>
<property name="password">"password"</property>
</component>
と設定しています。
コネクションプールの使われ方としては、
http://ml.seasar.org/archives/seasar-user/2007-July/009343.html
と概ね理解していますが、DAOメソッドを呼び出したした結果として、
Oracle側の内部エラーが起因で、
SQLException I/O例外です。パイプが切断されました。
SQLException クローズされた接続です。
という例外が返ってくることがあります(通常はないのですが、稀に)。
S2DAOだけでなく、DBCPに関連するかもしれませんが、DBとのコネクション
が上記の様に例外によりクローズした場合、DBCPやS2DAOは、その
JDBC Connectionのインスタンスをこれ以上使用できないものとして
いつかのタイミングで解放する動作をするでしょうか?
それとも、クローズされた接続のJDBC Connectionのインスタンスとは
認識せずに、(アイドルとして設定時間経過しない限り)解放しない
のでしょうか?
宜しくお願いします。
-以上-
seasar-s2dao-dev メーリングリストの案内