モジュール java.sql
パッケージ javax.sql

インタフェースPooledConnection

既知のすべてのサブインタフェース:
XAConnection

public interface PooledConnection
接続プール管理のフックを提供するオブジェクトです。 PooledConnectionオブジェクトは、データ・ソースへの物理接続を表します。 アプリケーションがある接続で終了したとき、その接続は閉じられずにリサイクルされます。そのため、生成する必要のある接続数を減らすことができます。

アプリケーション・プログラマがPooledConnectionインタフェースを直接使用することはありません。むしろ、接続のプーリングを管理する中間層インフラストラクチャが使用します。

アプリケーションは、DataSource.getConnectionメソッドを呼び出すと、Connectionオブジェクトを戻します。 接続プールの実行中、Connectionオブジェクトは、物理接続であるPooledConnectionオブジェクトのハンドルになります。

接続プール管理プログラム(通常アプリケーション・サーバー)は、PooledConnectionオブジェクトのプールを管理します。 プール内に利用可能なPooledConnectionオブジェクトが存在する場合、その物理接続のハンドルであるConnectionオブジェクトを返します。 利用可能なPooledConnectionオブジェクトが存在しない場合、接続プール管理プログラムは、ConnectionPoolDataSourceメソッドのgetPoolConnectionを呼び出して、新しい物理接続を作成します。 ConnectionPoolDataSourceを実装するJDBCドライバは、新しいPooledConnectionオブジェクトを作成し、そのハンドルを返します。

接続を閉じるとき、アプリケーションはConnectionメソッドcloseを呼び出します。 接続プールの実行中、接続プール管理プログラムに通知が送られます。これは、接続プール管理プログラムがConnectionPoolメソッドaddConnectionEventListenerを使用して、ConnectionEventListenerオブジェクトとして登録されているからです。 接続プール管理プログラムはPooledConnectionオブジェクトのハンドルを終了し、接続プールにPooledConnectionオブジェクトを返します。返されたオブジェクトは再利用可能です。 このように、アプリケーションが接続を閉じるとき、背後の物理接続は閉じられず、リサイクルされます。

接続プール・マネージャがPoolConnection.getConnectionの呼び出しから返された論理ハンドルをラップするか、またはプロキシを提供する場合、プール・マネージャは、Connection.closeを呼び出すアプリケーションにレスポンスして接続プール・マネージャがプールにPooledConnectionを閉じるか、返したときに:

  • 論理ConnectionハンドルでendRequestを呼び出します。
  • 論理Connectionハンドルでcloseを呼び出します。

物理接続は、接続プール管理プログラムがPooledConnectionメソッドcloseを呼び出すまで閉じられません。 一般に、このメソッドは、通常どおりの手順でサーバーを終了する場合、または致命的なエラーによって接続が使用できない状態になった場合に呼び出されます。

接続プール管理プログラムは、通常、PreparedStatementオブジェクトのプールを管理することにより、文のプールの管理プログラムとしても機能します。 用意された文を閉じるとき、アプリケーションはPreparedStatementメソッドのcloseを呼び出します。 プール管理プログラムはConnectionPoolメソッドのaddStatementEventListenerを使って自身をStatementEventListenerオブジェクトとして登録しているため、Statementのプールの実行中に通知を受け取ります。 このように、アプリケーションがPreparedStatementを閉じるとき、配下の用意された文は閉じられず、リサイクルされます。

導入されたバージョン:
1.4
  • メソッドのサマリー

    修飾子と型 メソッド 説明
    void addConnectionEventListener​(ConnectionEventListener listener)
    指定したイベント・リスナーを登録して、このPooledConnectionオブジェクトでイベントが発生したときに通知されるようにします。
    void addStatementEventListener​(StatementEventListener listener)
    このPooledConnectionオブジェクトにStatementEventListenerを登録します。
    void close()
    このPooledConnectionオブジェクトが表す物理接続を閉じます。
    Connection getConnection()
    Connectionオブジェクト(このPooledConnectionオブジェクトが表す物理接続のハンドル)を作成し、返します。
    void removeConnectionEventListener​(ConnectionEventListener listener)
    指定したイベント・リスナーを、このPooledConnectionオブジェクトでイベントが発生したときに通知されるコンポーネントのリストから削除します。
    void removeStatementEventListener​(StatementEventListener listener)
    PreparedStatementが閉じられたか無効であることをドライバが検出したときに通知を受けるコンポーネントのリストから、指定されたStatementEventListenerを削除します。
  • メソッドの詳細

    • getConnection

      Connection getConnection() throws SQLException
      Connectionオブジェクト(このPooledConnectionオブジェクトが表す物理接続のハンドル)を作成し、返します。 接続プール管理プログラムは、アプリケーションによってDataSource.getConnectionメソッドが呼び出されたが、利用可能なPooledConnectionオブジェクトが存在しない場合に、このメソッドを呼び出します。 詳細は、interface descriptionを参照してください。
      戻り値:
      このPooledConnectionオブジェクトのハンドルであるConnectionオブジェクト
      例外:
      SQLException - データベース・アクセス・エラーが発生した場合
      SQLFeatureNotSupportedException - JDBCドライバがこのメソッドをサポートしない場合
      導入されたバージョン:
      1.4
    • close

      void close() throws SQLException
      このPooledConnectionオブジェクトが表す物理接続を閉じます。 アプリケーションがこのメソッドを直接呼び出すことはありません。このメソッドは、接続プール・モジュール、または接続プール管理プログラムによって呼び出されます。

      詳細は、interface descriptionを参照してください。

      例外:
      SQLException - データベース・アクセス・エラーが発生した場合
      SQLFeatureNotSupportedException - JDBCドライバがこのメソッドをサポートしない場合
      導入されたバージョン:
      1.4
    • addConnectionEventListener

      void addConnectionEventListener​(ConnectionEventListener listener)
      指定したイベント・リスナーを登録して、このPooledConnectionオブジェクトでイベントが発生したときに通知されるようにします。
      パラメータ:
      listener - ConnectionEventListenerインタフェースを実装し、接続の終了時またはエラーの発生時に通知を受けるコンポーネント。通常は接続プール管理プログラム
      関連項目:
      removeConnectionEventListener(javax.sql.ConnectionEventListener)
    • removeConnectionEventListener

      void removeConnectionEventListener​(ConnectionEventListener listener)
      指定したイベント・リスナーを、このPooledConnectionオブジェクトでイベントが発生したときに通知されるコンポーネントのリストから削除します。
      パラメータ:
      listener - ConnectionEventListenerインタフェースを実装し、このPooledConnectionオブジェクトにリスナーとして登録されたコンポーネント。通常は接続プール管理プログラム
      関連項目:
      addConnectionEventListener(javax.sql.ConnectionEventListener)
    • addStatementEventListener

      void addStatementEventListener​(StatementEventListener listener)
      このPooledConnectionオブジェクトにStatementEventListenerを登録します。 接続によって作成されたPreparedStatementが閉じられたとき、または無効であると判断された場合に通知を受けるコンポーネントは、このメソッドを使って、このPooledConnectionオブジェクトにStatementEventListenerを登録できます。
      パラメータ:
      listener - このPooledConnectionオブジェクトに登録するStatementEventListenerインタフェースを実装するコンポーネント
      導入されたバージョン:
      1.6
    • removeStatementEventListener

      void removeStatementEventListener​(StatementEventListener listener)
      PreparedStatementが閉じられたか無効であることをドライバが検出したときに通知を受けるコンポーネントのリストから、指定されたStatementEventListenerを削除します。
      パラメータ:
      listener - このPooledConnectionオブジェクトに以前に登録されたStatementEventListenerインタフェースを実装するコンポーネント
      導入されたバージョン:
      1.6