7

Tomcat JBDC 接続プールを参照すると、そこにあるスタンドアロン Java の例を見ると、datasource.getConnection()クールな接続を使用して接続が取得されます。しかし、finally ブロックでは、 と表示されますcon.close()

質問: これを実装するとcon、最後に I get from datasource が毎回閉じられることは明らかです。これが閉じられると、接続プール メカニズムは新しい接続を取得してプールに追加しますか?

releaseConnection()プールを閉じるか、他の用途のために開くかをプールが独自に決定できるようにするようなメソッド呼び出しが必要だと思います。

私もこれをやろうとしましたが、これConnectionPool aPool = datasource.createPool(); にはリリース接続のようなものはありませんaPool

ここで何かが足りないと思いますか?あなたの助けに感謝。

Tomcat JBDC 接続プールのコード スニペット:

            DataSource datasource = new DataSource();
            datasource.setPoolProperties(p); 

            Connection con = null;
            try {
              con = datasource.getConnection();
              Statement st = con.createStatement();
              ResultSet rs = st.executeQuery("select * from user");
              int cnt = 1;
              while (rs.next()) {
                  System.out.println((cnt++)+". Host:" +rs.getString("Host")+
                    " User:"+rs.getString("User")+" Password:"+rs.getString("Password"));
              }
              rs.close();
              st.close();
            } finally {
              if (con!=null) try {con.close();}catch (Exception ignore) {}
            }
4

3 に答える 3

3

OK、悪いことに、 の実装が見られませんでしたDataSource。に基づいて をDataSourceProxy返す前に、内部的にプールを作成することを拡張します。ConnectionPoolProperties

最終的に閉じても、接続を処理するのはこの DataSource までであることは理解していますがcon、DataSource は必要なアクションを実行する可能性があります。

誰かがそうでないと思う場合は、コメント/返信を追加してください。

于 2013-05-08T04:56:52.313 に答える