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

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2009年 8月 17日 (月) 18:30:00 JST


小林 (koichik) です.

Date:    Mon, 17 Aug 2009 17:50:00 +0900
From:    尾藤 浩嗣 <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:18304] Re: [S2DBCP,S2DAO] DB(Oracle側)のエラーでコネクションクローズに至った場合再取得について

>   (2) (1)のすぐ後、S2DAOを用いた別のテーブルに対するデータ取得で以下の例外が発生

実際には (2) で PreparedStatement#executeQuery() を
呼び出す前にその PreparedStatement を取得するため
Connection#prepareStatement() が呼び出されたはずですが,
そこで例外が発生してないということですね.
それを書いたのが [Seasar-user:18268] の

> > 上記のような現象は Connection#prepareStatement() で
> > 例外が発生しなかったのではないでしょうか.

です.

> DEBUGレベルのログが残っていないため、論理的なコネクション、物理的なコネクションがいつ
> 取得、閉じられたかがログから明確にならないのですが、以下の様な動作になると考えても
> 良いでしょうか?
> 
>  ・ (1),(2)は、PreparedStatementUtil#executeQueryでの例外発生で、ここでは物理的なコネクションは
>     閉じられない(論理的なコネクションは閉じられる)

Connection ではなく Statement のメソッドがスローした
例外では論理・物理ともコネクションはクローズしません.
# S2Dao が明示的に Connection#close() を呼び出すことで
# 論理コネクションがクローズされます.

>  ・ (3) は、ConnectionUtil#prepareStatement での例外発生で、これによりdbcp実装は、
>     物理的なコネクションを閉じる(実際にDBとのコネクションはクローズされており、
>     dbcpとしてもコネクションインスタンスを解放する)

はい.


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