Интерфейс 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 в пул в ответ на вызов приложения %%%CODE_BLOCK_25%%:
- вызвать
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, 2021, 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/17/docs/api/java.sql/javax/sql/PooledConnection.html