[seasar-s2dao-dev:680] Re: DB(Oracle側)のエラーでコネクションクローズに至った場合再取得について

Toshihiro Nakamura [E-MAIL ADDRESS DELETED]
2009年 8月 10日 (月) 23:36:21 JST


中村(taedium)です。

> S2DAOを使っている場合の、DBとのコネクションの管理について質問です。

このMLはS2Daoのコミッタ間で利用することを意図したものです。
次回から、質問はseasar-userのMLにお願いします。

https://ml.seasar.org/mailman/listinfo/seasar-user


以下、回答します。

> S2DAOだけでなく、DBCPに関連するかもしれませんが、DBとのコネクション
> が上記の様に例外によりクローズした場合、DBCPやS2DAOは、その
> JDBC Connectionのインスタンスをこれ以上使用できないものとして
> いつかのタイミングで解放する動作をするでしょうか?
> 
> それとも、クローズされた接続のJDBC Connectionのインスタンスとは
> 認識せずに、(アイドルとして設定時間経過しない限り)解放しない
> のでしょうか?

S2DBCPは、Connectionのメソッド呼び出しで例外が発生した場合、
そのConnectionをプールに戻さず、ただちにクローズしています。
そのため、そのConnectionは2度と利用されません。
クローズされたかどうかは
例外がスローされる直前で「物理的なコネクションを閉じました」
といったメッセージがログに出力されるかどうかでわかります。


ところで、WebSphereを使っているということですが、
それならばSeasar2のJTAとコネクションプールではなく、
WebSphereのJTAとコネクションプールを使うことをお奨めします。

Seasarのバージョンが2.3なのか2.4なのかわかりませんが
2.4でのドキュメントへのリンクを載せておきます。

http://s2container.seasar.org/2.4/ja/transaction.html
http://s2container.seasar.org/2.4/ja/jdbc.html#GenericApplicationServer

-- 
Toshihiro Nakamura



seasar-s2dao-dev メーリングリストの案内