Интерфейс 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)

Регистрирует заданного обработчика событий, чтобы он получал уведомления при возникновении события на этом объекте PooledConnection.

void addStatementEventListener​(StatementEventListener listener)

Регистрирует StatementEventListener с этим объектом PooledConnection.

void close()

Закрывает физическое подключение, которое представляет этот объект PooledConnection.

Connection getConnection()

Создает и возвращает объект Connection, который является обработчиком физического подключения, которое представляет этот объект PooledConnection.

void removeConnectionEventListener​(ConnectionEventListener listener)

Удаляет заданного обработчика событий из списка компонентов, которые будут уведомлены при возникновении события на этом объекте PooledConnection.

void removeStatementEventListener​(StatementEventListener listener)

Удаляет указанного 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(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

Spec-Zone .ru
спецификации, руководства, описания, API