- 既知のすべてのサブインタフェース:
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 SQLExceptionConnection
オブジェクト(この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
-