Интерфейс 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. При использовании пула Statement менеджер пула уведомляется, потому что он зарегистрировал себя как объект 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, 2023, 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://docs.oracle.com/en/java/javase/21/docs/api/java.sql/javax/sql/PooledConnection.html