-
- All Known Subinterfaces:
-
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
调用返回的逻辑句柄的代理,则池管理器必须在连接池管理器关闭时执行以下操作之一,或者将PooledConnection
返回到池以响应应用程序调用Connection.close
:- 在逻辑
Connection
句柄上调用endRequest
- 在逻辑
Connection
句柄上调用close
在连接池管理器调用
PooledConnection
方法close
之前,物理连接不会关闭。 通常将此方法称为有序关闭服务器,或者如果致命错误导致连接不可用。连接池管理器通常也是语句池管理器,维护一个
PreparedStatement
对象池。 当应用程序关闭PreparedStatement
准备语句时,它会调用PreparedStatement
方法close
。 当Statement
池化Statement
,将通知池管理器,因为它已使用ConnectionPool
方法addStatementEventListener
将自身注册为StatementEventListener
对象。 因此,当应用程序关闭其PreparedStatement
,基础PreparedStatement
准备语句将被回收而不是被关闭。- 从以下版本开始:
- 1.4
-
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 void
addConnectionEventListener(ConnectionEventListener listener)
注册给定的事件侦听器,以便在此PooledConnection
对象上发生事件时通知它。void
addStatementEventListener(StatementEventListener listener)
注册一个StatementEventListener
这个PooledConnection
对象。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
。- 结果
-
Connection
对象,它是此PooledConnection
对象的句柄 - 异常
-
SQLException
- 如果发生数据库访问错误 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 - 从以下版本开始:
- 1.4
-
close
void close() throws SQLException
- 异常
-
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)
注册一个StatementEventListener
这个PooledConnection
对象。 当要被通知希望组分PreparedStatement
由连接创建s的关闭或被检测为无效可使用此方法来注册StatementEventListener
与此PooledConnection
对象。- 参数
-
listener
- 实现StatementEventListener
接口的组件,该接口将向此PooledConnection
对象注册 - 从以下版本开始:
- 1.6
-
removeStatementEventListener
void removeStatementEventListener(StatementEventListener listener)
从驱动程序检测到PreparedStatement
已关闭或无效时将通知的组件列表中删除指定的StatementEventListener
。- 参数
-
listener
- 实现先前在此PooledConnection
对象中注册的StatementEventListener
接口的组件 - 从以下版本开始:
- 1.6
-
-