Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > JDBC - наличие подключения к БД |
Автор: coderinside 5.1.2007, 00:35 | ||
Доброе время суток! Подскажите как определить потерю связи с сервером БД? В кратце: сервер - postgres, клиентская GUI программа на swing'e. Ест-но БД на другом компьютере в сети. Возможны частые отключения кабеля ![]() Сейчас делаю так:
Естественно если кабель выдернуть то будут exception'ы. Как следует это делать? |
Автор: COVD 5.1.2007, 00:47 |
Соединение нарушено, база зависла, в нее попал вражеский снаряд или она очень занята, в любом случае попытка общения с ней закончится исключением. А дальше можно попытаться создать новое соединение. |
Автор: coderinside 5.1.2007, 01:55 | ||
Т.е. намек на то, что обработку исключений от всех возможных запросов нужно проводить где-то в одном месте, там попытаться разузнать какое исключение означает обрыв соединения (и пр.) и по нему ставить флаг - "НЕТ ПОДКЛЮЧНИЯ"? Так? |
Автор: COVD 5.1.2007, 16:18 | ||
Намек на то, что обрыв соединения - не единственная возможная проблема. Пользователя в общем-то, не интересует причина, по которой база его не обслуживает. Поэтому приложение должно проанализировать выброшенное исключение. Если нарушено именно соединение, то можно сделать несколько попыток создать новое соединение (не ставя даже пользователя в известность) - возможно просто был кратковременный сбой, или базу перезапустили. Если отказ по таймауту, значит база занята, или запрос слишком тяжелый или вообще с базой что-то неладное. Возможно, новое соединение тоже в такой ситуации может помочь. Если же ошибка в запросе, то надо корректировать запрос. Чтобы выяснить причину, возможно придется анализировать сообщение, которое содержится в исключении, потому что исключение может быть всегда одного типа, но с разными сообщениями. |