Интерфейс 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, 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://docs.oracle.com/en/java/javase/25/docs/api/java.sql/javax/sql/PooledConnection.html