Есть ли способ, которым мы можем изменить свойства соединения, такие как пароль, динамически (во время выполнения) в рамках oracle UCP - PullRequest
0 голосов
/ 07 февраля 2020

Мы создаем пул соединений с базой данных, используя 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(); '''
...