Ошибка универсального пула соединений уже существует (Oracle UCP) Пользовательский источник данных SpringBootJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка универсального пула соединений уже существует (Oracle UCP) Пользовательский источник данных SpringBoot

Сообщение Anonymous »

Я столкнулся с приведенной ниже проблемой при работе в облаке после выполнения нескольких вызовов БД, но, к сожалению, не могу воспроизвести ее локально. Нужен совет или направление, если чего-то не хватает -
Caused by: oracle.ucp.UniversalConnectionPoolException: Universal Connection Pool already exists in the Universal Connection Pool Manager. Universal Connection Pool cannot be added to the Universal Connection Pool Manager
at oracle.ucp.util.UCPErrorHandler.newUniversalConnectionPoolException(UCPErrorHandler.java:378)
at oracle.ucp.util.UCPErrorHandler.throwUniversalConnectionPoolException(UCPErrorHandler.java:68)
at oracle.ucp.util.UCPErrorHandler.throwUniversalConnectionPoolException(UCPErrorHandler.java:91)
at oracle.ucp.util.UCPErrorHandler.throwUniversalConnectionPoolException(UCPErrorHandler.java:149)
at oracle.ucp.jdbc.PoolDataSourceImpl.createUniversalConnectionPool(PoolDataSourceImpl.java:985)
... 37 common frames omitted

У меня есть следующий bean-компонент DataSource — он был перенесен из OracleDataSource (dataSource.setConnectionCachingEnabled(true) — это устарело)
@Bean("testDataSource")
DataSource getDataSource() throws SQLException {
logger.info("Setting UP DataSource for : {}", DB_POOL_PROVIDER_UCP);

PoolDataSource pds = PoolDataSourceFactory.getPoolDataSource();

pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
pds.setURL(url);
pds.setUser(username);
pds.setPassword(password);

pds.setConnectionPoolName("TestDBPool");

pds.setMinPoolSize(2);
pds.setMaxPoolSize(50);
pds.setInitialPoolSize(3);

pds.setInactiveConnectionTimeout(60);
pds.setMaxStatements(100);
pds.setAbandonedConnectionTimeout(60);
pds.setConnectionWaitTimeout(30);
pds.setTimeToLiveConnectionTimeout(240);
pds.setTimeoutCheckInterval(60);

pds.setFastConnectionFailoverEnabled(false); //Just one node
pds.setValidateConnectionOnBorrow(true);
pds.setSQLForValidateConnection("select 1 from dual");

return pds;
}

И в большинстве мест используется DataSource

org.springframework.jdbc.object.StoredProcedure

И –

попробуйте (Connection conn = dataSource.getConnection())

SpringBootVersion — 3.3.0
UCP — 21.9.0.0
ojdbc11 - 21.9.0.0
Я пытался получить ConnectionPoolName после локального запуска приложения с использованием случайного API, но оно просто печатало указанное выше имя пула БД -
String[] poolNames = UniversalConnectionPoolManagerImpl.getUniversalConnectionPoolManager().getConnectionPoolNames();
for (int i = 0; i < poolNames.length; i++) {
System.out.println(poolNames);
}

Фрагмент POM –

org.springframework.boot
spring-boot-starter-jdbc


com.zaxxer
HikariCP




org.springframework.boot
spring-boot-starter-data-jpa


com.oracle.database.jdbc
ojdbc11


com.oracle.database.jdbc
ucp



Подробнее здесь: https://stackoverflow.com/questions/788 ... -custom-da
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»