Я разрабатываю приложение на основе загрузки Spring с автоматически настраиваемым пулом Tomcat DataSource. Мне нужно вызвать одну и ту же хранимую процедуру Oracle в разных схемах БД (для всех есть гранты на выполнение), и я не указал заранее список пользователей / паролей. Но я знаю учетные данные в момент вызова процедуры. Я использую метод getConnection (пользователь, пароль) объекта dataSource для получения соединения, и он отлично работает. Но если я вызову процедуру трижды один за другим - для пользователя A, пользователя B и снова пользователя A, метод подключения reconnect () будет вызываться дважды (для пользователя B и для второго вызова с пользователем A) - потому что Объект ConnectionPool, используемый в DataSource, извлекает то же соединение из очереди ожидания, проверяет его пользователя и пароль и снова подключается к БД с новыми учетными данными. В результате я теряю все преимущества пула соединений.
Подскажите, пожалуйста, есть ли какая-нибудь реализация пула соединений, который кеширует неактивное соединение по имени пользователя? Или, может быть, какой-нибудь другой способ уменьшить время повторного подключения? К сожалению, я не могу изменить процедуру Oracle или даже реализовать для нее оболочку.