- 已知的所有子接口:
-
XAConnection
PooledConnection
对象代表与数据源的物理连接。当应用程序使用完连接后,可以将连接回收而不是关闭它,从而减少需要建立的连接数量。
应用程序员不直接使用PooledConnection
接口;而是由管理连接池的中间层基础设施使用。
当应用程序调用方法DataSource.getConnection
时,会得到一个Connection
对象。如果正在进行连接池管理,那么该Connection
对象实际上是一个指向PooledConnection
对象的句柄,即一个物理连接。
连接池管理器,通常是应用服务器,维护一组PooledConnection
对象。如果连接池中有可用的PooledConnection
对象,连接池管理器会返回一个指向该物理连接的Connection
对象句柄。如果没有可用的PooledConnection
对象,连接池管理器会调用ConnectionPoolDataSource
方法getPoolConnection
来创建一个新的物理连接。实现ConnectionPoolDataSource
的JDBC驱动程序会创建一个新的PooledConnection
对象并返回一个句柄。
当应用程序关闭连接时,会调用Connection
方法close
。当进行连接池管理时,连接池管理器会被通知,因为它已经注册自己作为ConnectionEventListener
对象,使用ConnectionPool
方法addConnectionEventListener
。连接池管理器会停用指向PooledConnection
对象的句柄,并将PooledConnection
对象返回到连接池中,以便可以再次使用。因此,当应用程序关闭其连接时,底层物理连接会被回收而不是被关闭。
如果连接池管理器包装或提供了从调用PoolConnection.getConnection
返回的逻辑句柄的代理,则当连接池管理器关闭或将PooledConnection
返回到池中以响应应用程序调用Connection.close
时,连接池管理器必须执行以下操作之一:
- 在逻辑
Connection
句柄上调用endRequest
- 在逻辑
Connection
句柄上调用close
直到连接池管理器调用PooledConnection
方法close
,物理连接才会被关闭。通常会调用此方法以有序关闭服务器或如果致命错误使连接无法使用。
连接池管理器通常也是语句池管理器,维护一组PreparedStatement
对象。当应用程序关闭准备好的语句时,会调用PreparedStatement
方法close
。当进行Statement
池管理时,连接池管理器会被通知,因为它已经注册自己作为StatementEventListener
对象,使用ConnectionPool
方法addStatementEventListener
。因此,当应用程序关闭其PreparedStatement
时,底层准备好的语句会被回收而不是被关闭。
- 自版本:
- 1.4
-
Method Summary
Modifier and TypeMethodDescriptionvoid
注册给定的事件监听器,以便在此PooledConnection
对象上发生事件时通知它。void
使用此PooledConnection
对象向其注册一个StatementEventListener
。void
close()
关闭此PooledConnection
对象代表的物理连接。创建并返回一个Connection
对象,该对象是代表此PooledConnection
对象的物理连接的句柄。void
从将在此PooledConnection
对象上发生事件时通知的组件列表中移除给定的事件监听器。void
从将在驱动程序检测到PreparedStatement
已关闭或无效时通知的组件列表中移除指定的StatementEventListener
。
-
Method Details
-
getConnection
创建并返回一个Connection
对象,该对象是代表此PooledConnection
对象的物理连接的句柄。当应用程序调用方法DataSource.getConnection
且没有可用的PooledConnection
对象时,连接池管理器会调用此方法。有关更多信息,请参阅接口描述
。- 返回:
-
一个
Connection
对象,该对象是此PooledConnection
对象的句柄 - 抛出:
-
SQLException
- 如果发生数据库访问错误 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 - 自版本:
- 1.4
-
close
关闭此PooledConnection
对象代表的物理连接。应用程序永远不会直接调用此方法;它是由连接池模块或管理器调用的。有关更多信息,请参阅
接口描述
。- 抛出:
-
SQLException
- 如果发生数据库访问错误 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 - 自版本:
- 1.4
-
addConnectionEventListener
注册给定的事件监听器,以便在此PooledConnection
对象上发生事件时通知它。- 参数:
-
listener
- 一个组件,通常是连接池管理器,已实现ConnectionEventListener
接口并希望在连接关闭或出现错误时得到通知 - 参见:
-
removeConnectionEventListener
从将在此PooledConnection
对象上发生事件时通知的组件列表中移除给定的事件监听器。- 参数:
-
listener
- 一个组件,通常是连接池管理器,已实现ConnectionEventListener
接口并已在此PooledConnection
对象上注册为监听器 - 参见:
-
addStatementEventListener
使用此PooledConnection
对象向其注册一个StatementEventListener
。希望在连接创建的PreparedStatement
被关闭或检测到无效时得到通知的组件可以使用此方法在此PooledConnection
对象上注册一个StatementEventListener
。- 参数:
-
listener
- 一个实现了StatementEventListener
接口的组件,将要在此PooledConnection
对象上注册 - 自版本:
- 1.6
-
removeStatementEventListener
从将在驱动程序检测到PreparedStatement
已关闭或无效时通知的组件列表中移除指定的StatementEventListener
。- 参数:
-
listener
- 一个实现了StatementEventListener
接口的组件,先前已在此PooledConnection
对象上注册 - 自版本:
- 1.6
-