Восстановление соединений в пуле Oracle UCP - PullRequest
0 голосов
/ 01 октября 2018

Я использую Oracle UCP JDBC, и следующий метод предназначен для получения соединения из пула соединений.

private static PoolDataSource poolDataSource;

....

static synchronized Connection createConnection() throws SQLException {
    if (poolDataSource == null) {
        poolDataSource = PoolDataSourceFactory.getPoolDataSource();
        poolDataSource.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
        poolDataSource.setURL(url);
        poolDataSource.setUser(user);
        poolDataSource.setPassword(password);
        poolDataSource.setInitialPoolSize(1);
        poolDataSource.setMinPoolSize(1);
        poolDataSource.setMaxPoolSize(10);
    }
    Connection connection = poolDataSource.getConnection();
    return connection;
}

Я знаю, что существует метод Connection.isValid () для проверки, получено ли соединениеиз бассейна действует.Но если isValid () возвращает false, что я могу сделать?Как заставить пул соединений восстановить соединение?

Также обратите внимание, что в нашей тестовой среде мы не используем RAC (Real Application Clusters), но в производственной среде у нас есть RAC.Я прочитал, что для RAC нам необходимо выполнить некоторую настройку в кодах, чтобы RAC работал.

Возможно ли иметь одинаковые коды для сред RAC и не RAC, чтобы недопустимые соединения вбассейн восстановлен?

Заранее спасибо.

1 Ответ

0 голосов
/ 03 ноября 2018

Если ваша база данных запущена и работает, то isValid () вернет true, указывая, что приложение может подключиться к БД.Однако в производственной системе будет много узлов, и если один из узлов не работает, UCP получит соединение от других узлов.Дайте мне знать, если это прояснит ваш вопрос.

...