JavaTM 2 Platform
Standard Ed. 6

javax.sql
介面 PooledConnection

所有已知子介面:
XAConnection

public interface PooledConnection

為連接池管理提供鉤子 (hook) 的物件。PooledConnection 物件表示到資料源的物理連接。該連接在應用程序使用完後可以回收而不用關閉,從而減少了需要建立連接的次數。

應用開發人員不直接使用 PooledConnection 介面,而是通過一個管理連接池的中間層基礎設施使用。

當應用程序調用 DataSource.getConnection 方法時,它取回 Connection 物件。如果連接池已完成,則該 Connection 物件實際上是到 PooledConnection 物件的句柄,這是一個物理連接。

連接池管理器(通常為應用程序伺服器)維護 PooledConnection 物件的池。如果在池中存在可用的 PooledConnection 物件,則連接池管理器返回作為到該物理連接的句柄的 Connection 物件。如果不存在可用的 PooledConnection 物件,則連接池管理器調用 ConnectionPoolDataSource 方法 getPoolConnection 創建新的物理連接。實作 ConnectionPoolDataSource 的 JDBC 驅動程序創建新的 PooledConnection 物件並返回一個到它的句柄。

當應用程序關閉連接時,它調用 Connection 方法 close。完成連接池時,連接池管理器將得到通知;因為它曾使用 ConnectionPool 方法 addConnectionEventListener 作為 ConnectionEventListener 物件註冊它自身。連接池管理器釋放到 PooledConnection 物件的句柄,並將 PooledConnection 物件返回到連接池,以便再次使用。因此,當應用程序關閉其連接時,基礎物理連接會被回收而不是被關閉。

在連接池管理器調用 PooledConnection 方法 close 之前,物理連接不會被關閉。調用此方法通常是為了按順序關閉伺服器,也可能在發生了嚴重錯誤,導致連接變得不可用時調用。

連接池管理器通常也是一個語句池管理器,用於維護 PreparedStatement 物件的池。當應用程序關閉一個準備好的語句時,它調用 PreparedStatement 方法 close。 當完成 Statement 池操作時,該池管理器獲得通知,因為它本身已使用 ConnectionPool 方法 addStatementEventListener 作為 StatementEventListener 物件註冊。 因此,當應用程序關閉其 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)
          從一個元件列表中移除指定的 StatementEventListener,該列表由驅動程序檢測到 PreparedStatement 已關閉或無效時將獲得通知的元件組成。
 

方法詳細資訊

getConnection

Connection getConnection()
                         throws SQLException
創建並返回一個 Connection 物件,它是此 PooledConnection 物件表示的物理連接的句柄。當應用程序已經調用 DataSource.getConnection 方法但不存在可用的 PooledConnection 物件時,連接池管理器將調用此方法。有關更多資訊,請參閱介面描述

返回:
一個 Connection 物件,它是到此 PooledConnection 物件的句柄
拋出:
SQLException - 如果發生資料庫存取錯誤
SQLFeatureNotSupportedException - 如果 JDBC 驅動程序不支持此方法
從以下版本開始:
1.4

close

void close()
           throws SQLException
關閉此 PooledConnection 物件表示的物理連接。應用程序永遠不會直接調用此方法;它由連接池模組或管理器調用。

有關更多資訊,請參閱介面描述

拋出:
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)
從一個元件列表中移除指定的 StatementEventListener,該列表由驅動程序檢測到 PreparedStatement 已關閉或無效時將獲得通知的元件組成。

參數:
listener - 實作以前向此 PooledConnection 物件註冊的 StatementEventListener 介面的元件

從以下版本開始:
1.6

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only