Oracle Datasource возвращает нулевое соединение - PullRequest
7 голосов
/ 31 марта 2009

Источник данных oracle возвращает нулевое соединение, когда больше нет запроса на соединение. У меня включен кэш имплицитов. В спецификации оракула сказано, что null возвращается только при установленном ConnectionWaitTimeout. У меня нет значения для ConnectionWaitTimeout в свойствах кэша.

Это то, что спецификация говорит о

ConnectionWaitTimeout

Определяет поведение кэша, когда запрашивается соединение, и уже существуют активные подключения MaxLimit. Если ConnectionWaitTimeout больше нуля, то каждый запрос на подключение ожидает указанное количество секунд или пока соединение не будет возвращено в кэш. Если никакое соединение не возвращается в кэш до истечения времени ожидания, тогда запрос соединения возвращает ноль.

По умолчанию: 0 (без таймаута)

Каковы другие возможности, когда источник данных может вернуть нулевое соединение?

Ответы [ 2 ]

2 голосов
/ 31 марта 2009

Я думаю, что значение по умолчанию может отличаться в зависимости от того, какую версию Oracle вы используете. Часть информации противоречива, например, Оракулы " Оптимизация поведения пула соединений " подразумевают, что по умолчанию установлено значение 3 секунды (11 г?), Когда другие источники заявляют, что оно равно нулю, как упоминалось в вопросе.

Я бы предложил явно установить его на ноль и посмотреть, проявляется ли поведение по-прежнему.

0 голосов
/ 31 марта 2009

Я попытался установить это значение. Хотя в документах говорится, что по умолчанию время не истекло, когда я не устанавливал это свойство, источник данных возвращал значение null. Когда я явно указывал значение, ожидающее соединение, даже значение 0 давало мне нулевое соединение. *

...