Установка свойства пула для oracle.jdbc.pool.OracleDataSource - PullRequest
3 голосов
/ 14 октября 2010

Я использую oracle.jdbc.pool.OracleDataSource для пула соединений.Я хотел бы, чтобы пул проверил, было ли соединение закрыто должным образом и перехватил это.Я попробовал следующее:

ods = new OracleDataSource();

ods.setConnectionCachingEnabled(true);
ods.setConnectionCacheName(CACHE_NAME);

Properties cacheProps = new Properties();
cacheProps.setProperty("MinLimit", Integer.toString(1));
cacheProps.setProperty("MaxLimit", Integer.toString(6));
cacheProps.setProperty("InitialLimit", "1");
cacheProps.setProperty("AbandonedConnectionTimeout", "2");

ods.setConnectionCacheProperties(cacheProps);

Я проверяю активные соединения следующим образом:

occm = OracleConnectionCacheManager.getConnectionCacheManagerInstance();
occm.getNumberOfActiveConnections(CACHE_NAME);

Если я не закрываю соединение в приложении, пул просто заполняет до 6, поэтому

cacheProps.setProperty("AbandonedConnectionTimeout", "2");

не работает.Почему?

Любая подсказка будет оценена

Ответы [ 2 ]

5 голосов
/ 14 октября 2010

Согласно В руководстве Oracle задействовано еще одно свойство.

Когда кеш создается, устанавливаются три важных свойства: PropertyCheckInterval, AbandonedConnectionTimeout и LowerThresholdLimit. PropertyCheckInterval устанавливает интервал времени, в течение которого менеджер кэша проверяет и применяет все указанные свойства кэша.

Попробуйте также установить

 cacheProps.setProperty("PropertyCheckInterval", "1");

По умолчанию 15 минут ...

Две секунды, вероятно, немного короче, чтобы соединение считалось разорванным, и, поскольку вы также должны явно установить интервал проверки, я мог бы предположить, что это потребует некоторых накладных расходов. Поскольку вы действительно очень хотите правильно закрывать соединения в коде приложения и полагаться на это только в очень редких случаях, вам, вероятно, следует установить более высокие значения для обоих.

0 голосов
/ 10 января 2019

Вы должны добавить это свойство:

cacheProps.setProperty("InactivityTimeout", "2")

cacheProps.setProperty("AbandonedConnectionTimeout", "2")

cacheProps.setProperty("PropertyCheckInterval", "1")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...