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