Интерфейс 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(ConnectionEventListener listener) |
Регистрирует заданного обработчика событий, чтобы он получал уведомления при возникновении события на этом объекте |
void |
addStatementEventListener(StatementEventListener listener) |
Регистрирует |
void |
close() |
Закрывает физическое подключение, которое представляет этот объект |
Connection |
getConnection() |
Создает и возвращает объект |
void |
removeConnectionEventListener(ConnectionEventListener listener) |
Удаляет заданного обработчика событий из списка компонентов, которые будут уведомлены при возникновении события на этом объекте |
void |
removeStatementEventListener(StatementEventListener listener) |
Удаляет указанного |
Методы
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(javax.sql.ConnectionEventListener)
removeConnectionEventListener
void removeConnectionEventListener(ConnectionEventListener listener)
Удаляет заданного обработчика событий из списка компонентов, которые будут уведомлены при возникновении события на этом объекте PooledConnection.
- Параметры:
-
listener- компонент, обычно управляющий пулом подключений, который реализовал интерфейсConnectionEventListenerи был зарегистрирован с этим объектомPooledConnectionкак слушатель - См. также:
addConnectionEventListener(javax.sql.ConnectionEventListener)
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, 2020, 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/11/docs/api/java.sql/javax/sql/PooledConnection.html