Hibernate занимает 10 минут, чтобы вызвать исключение, когда база данных не работает

StackOverflow https://stackoverflow.com/questions/1614375

  •  06-07-2019
  •  | 
  •  

Вопрос

Я использую Spring + Hibernate 3 + C3P0. При запуске, если база данных не работает, исключение выдается примерно через 10 минут. До этого программа блокируется ... Я не включаю Spring xml, конфигурацию гибернации и т. Д., Поскольку это довольно распространенная проблема, и если решение существует, оно должно быть стандартным простым способом. Если нет, я могу обрезать важный код и конфигурацию и вставить его здесь. Кто-нибудь знает что-нибудь об этом? Заранее спасибо.

<Ч>

Чтобы уточнить:

В сущности, мне нужно знать, есть ли обертка в c3p0, hibernate или даже spring вокруг функции DriverManager.setLoginTimeout (). Или функция, которая предлагает мне эту функциональность. Обертка может быть через настройки или что-то. Я просто хочу получить исключение, если я не подключился к источнику данных в течение X секунд, независимо от причины (сокет, база данных, плохая погода). И я хочу найти место для установки этого X. Что еще хуже, драйвер Oracle, который является драйвером, который я использую, не реализует setLoginTimeout (), поэтому я не могу использовать его напрямую. Я пришел к выводу, что нет способа решить эту проблему, кроме как вручную создать собственный поток таймера. Кто-нибудь может проверить вышеуказанную ситуацию? Большое спасибо.

Это было полезно?

Решение

Скорее всего, это не связано с Hibernate / Spring как таковым; пул соединений с базой данных отвечает за работу с соединениями.

<Ол>
  • Каковы ваши настройки C3P0?
  • Какую базу данных / драйвер вы используете? Существуют ли какие-либо специфичные для драйвера настройки, заставляющие сам драйвер ждать / повторять попытки, прежде чем сообщить об ошибке?
  • «База данных отключена»? значит "полностью вниз"? Или это может быть вызвано каким-то тайм-аутом сокета?
  • Обновление (на основании пояснений к ОП ниже):

    DriverManager.setLoginTimeout () не используется драйвером oracle. OracleDataSource имеет свой собственный взамен настройки loginTimeout .

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top