Мы создаем пул соединений с базой данных, используя oracle UCP framework, когда приложение запускается со всеми свойствами соединения, такими как имя пользователя, пароль, URL и т. Д. c. Кажется, что эти свойства после инициализации остаются в памяти на протяжении всего срока службы приложения.
Сценарий использования: существует расписание смены пароля, которое ежедневно выполняется для базы данных oracle, поэтому наше приложение получает новый пароль, но я не могу изменить вновь созданные подключения к базе данных, чтобы использовать измененный пароль с помощью UCP Framework. Можем ли мы изменить свойство пароля для соединения во время выполнения?
Пример кода:
PoolDataSource pds = PoolDataSourceFactory.getPoolDataSource();
UniversalConnectionPoolManager mgr=UniversalConnectionPoolManagerImpl.getUniversalConnectionPoolManager();
//set the connection properties on the data source.
System.out.println(pds);
pds.setConnectionFactoryClassName("oracle.jdbc.driver.OracleDriver");
pds.setURL("jdbc:oracle:thin:@10.x.x.x:1521:abcd");
pds.setUser("user");
pds.setPassword("password");
pds.setConnectionPoolName("Test_pool");
pds.setMaxPoolSize(3);
pds.setInitialPoolSize(1);
mgr.createConnectionPool((UniversalConnectionPoolAdapter) pds);
mgr.startConnectionPool("Test_pool");
//Get a database connection from the datasource.
System.out.println("Borrowed Connections: " + pds.getBorrowedConnectionsCount() + "Available Connections: " + pds.getAvailableConnectionsCount());
Connection conn = pds.getConnection();
//Setting wrong password and expecting the next getConnection call to fail but it succeeds
pds.setPassword("password123");
//pds.setInitialPoolSize(5);
System.out.println("Borrowed Connections: " + pds.getBorrowedConnectionsCount() + "Available Connections: " + pds.getAvailableConnectionsCount());
Connection conn2 = pds.getConnection(); '''