Ищите советы по наилучшей практике для получения соединений при использовании диспетчера пулов Oracle UCP Connection Manager. Я не могу сказать из документации, если вы должны хранить ссылки на объекты PoolDataSource и получать от них соединения, или если вы просто должны использовать своего Менеджера для соединения с каким-то кодом следующим образом:
(Connection)getConnectionPool(connectionPoolName).borrowConnection(getRetrievalMap().get(connectionPoolName)).getPhysicalConnection();
Все примеры, похоже, используют объекты PoolDataSource для получения их соединений. Люди держат их вокруг, а затем просто используют Менеджера для администрирования с пулами? Или они получают объекты java.sql.Connection непосредственно из Менеджера с помощью getPhysicalConnection()? Я немного обеспокоен использованием getPhysicalConnection(), не уверен, знает ли пул об этом. Например, закрытие соединения, полученного с помощью getPhysicalConnection(), вернется в пул?
Есть ли лучший способ получить подключения от Менеджера, которого я не вижу?
Отвечая на мой вопрос:
После некоторой отладки, похоже, мы не должны использовать getPhysicalConnection() при использовании пула. Выполнение close() на нем не возвращает его в пул сразу, где close() в соединении из PoolDataSource возвращается прямо в пул. Кроме того, физическое соединение является экземпляром TC4Connection, где Connection from PoolDataSource является прокси с некоторыми полями объединения и ссылкой на T4CConnection.
Поэтому я предполагаю, что мы будем сохранять объекты PoolDataSource и получать от них свои соединения. Я хочу, чтобы документы Oracle охватывали эту тему в главе "Менеджер".