Интерфейс PooledConnection
- Все известные подинтерфейсы:
XAConnection
public interface PooledConnection
PooledConnection представляет физическое соединение с источником данных. Соединение может быть повторно использовано вместо закрытия, когда приложение с ним закончено, что уменьшает количество необходимых соединений. Программист приложения не использует интерфейс PooledConnection напрямую; он используется инфраструктурой среднего уровня, которая управляет пулом соединений.
Когда приложение вызывает метод DataSource.getConnection, оно получает объект Connection. Если используется пул соединений, этот объект Connection фактически является дескриптором объекта PooledConnection, который представляет собой физическое соединение.
Управляющий пулом соединений, обычно сервер приложений, поддерживает пул объектов PooledConnection. Если в пуле доступен объект PooledConnection, управляющий пулом возвращает объект Connection, который является дескриптором этого физического соединения. Если доступный объект PooledConnection отсутствует, управляющий пулом вызывает метод ConnectionPoolDataSource getPoolConnection для создания нового физического соединения. Драйвер JDBC, реализующий интерфейс ConnectionPoolDataSource, создает новый объект PooledConnection и возвращает дескриптор к нему.
Когда приложение закрывает соединение, оно вызывает метод Connection close. При использовании пула соединений управляющий пулом уведомляется, поскольку он зарегистрировал себя как объект ConnectionEventListener с помощью метода ConnectionPool addConnectionEventListener. Управляющий пулом деактивирует дескриптор объекта PooledConnection и возвращает объект PooledConnection в пул соединений для повторного использования. Таким образом, когда приложение закрывает соединение, лежащее в основе физическое соединение повторно используется, а не закрывается.
Если управляющий пулом соединений обертывает или предоставляет прокси к логическому дескриптору, возвращаемому в результате вызова PoolConnection.getConnection, управляющий пулом должен выполнить одно из следующих действий, когда он закрывает или возвращает PooledConnection в пул в ответ на вызов приложения Connection.close:
- вызвать метод
endRequestна логическом дескриптореConnection - вызвать метод
closeна логическом дескриптореConnection
Физическое соединение не закрывается до тех пор, пока управляющий пулом не вызовет метод PooledConnection close. Этот метод обычно вызывается для плавного завершения работы сервера или если возникла критическая ошибка, сделавшая соединение непригодным для использования.
Управляющий пулом соединений часто также является управляющим пулом подготовленных запросов, поддерживая пул объектов PreparedStatement. Когда приложение закрывает подготовленный запрос, оно вызывает метод PreparedStatement close. Когда используется пул подготовленных запросов, управляющий пулом уведомляется, поскольку он зарегистрировался как объект StatementEventListener, используя метод ConnectionPool addStatementEventListener. Таким образом, когда приложение закрывает свой PreparedStatement, лежащий в основе подготовленный запрос повторно используется, а не закрывается.
- С момента:
- 1.4
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addConnectionEventListener |
Регистрирует заданный обработчик событий, чтобы он получал уведомления о событиях на данном объекте PooledConnection. |
void |
addStatementEventListener |
Регистрирует StatementEventListener с этим объектом PooledConnection. |
void |
close() |
Закрывает физическое соединение, которое представляет этот объект PooledConnection. |
Connection |
getConnection() |
Создает и возвращает объект Connection, который является дескриптором физического соединения, представленного этим объектом PooledConnection. |
void |
removeConnectionEventListener |
Удаляет заданный обработчик событий из списка компонентов, которые будут уведомлены при возникновении события на этом объекте PooledConnection. |
void |
removeStatementEventListener |
Удаляет указанный StatementEventListener из списка компонентов, которые будут уведомлены, когда драйвер обнаружит, что PreparedStatement был закрыт или является недействительным. |
Подробное описание методов
getConnection
Connection getConnection() throws SQLException
Connection, который является дескриптором физического соединения, представленного этим объектом PooledConnection. Управляющий пулом соединений вызывает этот метод, когда приложение вызвало метод DataSource.getConnection, и нет доступных объектов PooledConnection. Подробнее см. interface description.- Возвращает:
- объект
Connection, который является дескриптором этого объектаPooledConnection - Исключения:
-
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
void removeConnectionEventListener(ConnectionEventListener listener)
PooledConnection.- Параметры:
-
listener- компонент, обычно управляющий пулом соединений, который реализовал интерфейсConnectionEventListenerи был зарегистрирован с этим объектомPooledConnectionв качестве слушателя - См. также:
addStatementEventListener
void addStatementEventListener(StatementEventListener listener)
StatementEventListener с этим объектом PooledConnection. Компоненты, которые хотят получать уведомления о закрытии PreparedStatement, созданных соединением, или об обнаружении их недействительности, могут использовать этот метод для регистрации StatementEventListener с этим объектом PooledConnection.- Параметры:
-
listener- компонент, реализующий интерфейсStatementEventListener, который должен быть зарегистрирован с этим объектомPooledConnection - С момента:
- 1.6
removeStatementEventListener
void removeStatementEventListener(StatementEventListener listener)
StatementEventListener из списка компонентов, которые будут уведомлены, когда драйвер обнаружит, что PreparedStatement был закрыт или является недействительным.- Параметры:
-
listener- компонент, реализующий интерфейсStatementEventListener, который был ранее зарегистрирован с этим объектомPooledConnection - С момента:
- 1.6
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.sql/javax/sql/PooledConnection.html