powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / кидает ли Java исключение, если процесс потеряет связь с бд?
17 сообщений из 17, страница 1 из 1
кидает ли Java исключение, если процесс потеряет связь с бд?
    #39498023
noob1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кидает ли Java исключение, если процесс потеряет связь с бд? какой класс используется для такой ошибки? SQLException?

Заранее спасибо за ответы)
...
Рейтинг: 0 / 0
кидает ли Java исключение, если процесс потеряет связь с бд?
    #39498055
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Java не умеет работать с БД из коробки. Но она декларирует интерфейсы в пакете java.sql.*
которые (обычно) имеют массу кастомных реализаций. Например ojdbcXX.jar для Oracle.
Реализации вы сами предоставляете вашему приложению через classpath.

2) Непонятно о каком процессе идет речь. Все процессы вы сами кодите. Вы можете использовать
метод Connection::isValid(..) для проверки доступна БД в данную секунду или нет. Реализация
этого метода опять-же специфичная не к Java а к драйверу БД и обычно содержит SELECT 1
из какой-то таблички.

3) Принудительно каждую секунду пинговать или дергать БД из клиентского приложения
считается дурным тоном. По крайней мере вы вступите в противостояние с ДБА который обслуживает
дееспособность системы. Или вы будете объяснять ему причину такой активности.

Обрабатывайте исключение по факту исполнения полезной работы.
БД и драйвер в состоянии покоя обычно не спрашивают друг друга ни о чем и ничего не проверяют.
...
Рейтинг: 0 / 0
кидает ли Java исключение, если процесс потеряет связь с бд?
    #39498207
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noob1111,

Ну вообще если Вы работаете с субд(Например через JDBC).
И связь с базой потерялась(Выдернули кабель из свича или потушили сервер)...
Сразу исключение не будет.Но как только вы обратитесь к СУБД.(Перечитать анные...получить новые) сразу получите исключение...например soceket timeout..
(Говорю про oracle и DB2...думаю у большинство остальных поведение такое же)
...
Рейтинг: 0 / 0
кидает ли Java исключение, если процесс потеряет связь с бд?
    #39498290
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noob1111,
Если это не тест вопрос, то вам все равно надо сделать общий обработчик exception c выводом сообщнний. Вот у оракле по номеру ORA:1234 вы и узнаете что именно с коннектом.
Так что события нету и проверка комплексная индивидуальная для бд.
...
Рейтинг: 0 / 0
кидает ли Java исключение, если процесс потеряет связь с бд?
    #39498518
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
noob1111,
исключение по любому будет, запусти программу которая работает с бд, а потом отключи сервер бд - получишь исключение
...
Рейтинг: 0 / 0
кидает ли Java исключение, если процесс потеряет связь с бд?
    #39498521
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174noob1111,
исключение по любому будет, запусти программу которая работает с бд, а потом отключи сервер бд - получишь исключение
Если (в терминологии ТС) Java его перехватит, то не получит.
...
Рейтинг: 0 / 0
кидает ли Java исключение, если процесс потеряет связь с бд?
    #39498524
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczrema174noob1111,
исключение по любому будет, запусти программу которая работает с бд, а потом отключи сервер бд - получишь исключение
Если (в терминологии ТС) Java его перехватит, то не получит.

этож надо, чтобы тс его перхватил, - джава ж сама ничего не перехватывает...
...
Рейтинг: 0 / 0
кидает ли Java исключение, если процесс потеряет связь с бд?
    #39498537
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noob1111кидает ли Java исключение, если процесс потеряет связь с бд? какой класс используется для такой ошибки? SQLException?

Заранее спасибо за ответы)Если вендор драйвера JDBC про TCP/IP ничего не читал, то может быть ситуация, что соединение тупо "зависнет", т.е. со стороны жавы вы будете видеть, что она что-то пытается получить от сервера, а сервер об этом соединении даже знать не будет.
...
Рейтинг: 0 / 0
кидает ли Java исключение, если процесс потеряет связь с бд?
    #39498539
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174этож надо, чтобы тс его перхватил, - джава ж сама ничего не перехватывает...
Пул может сам перехватить. В терминологии ТС это тоже Java. Если соединение можно восстановить, не обязательно выкидывать исключение наружу.
...
Рейтинг: 0 / 0
кидает ли Java исключение, если процесс потеряет связь с бд?
    #39498555
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПанфиловЕсли вендор драйвера JDBC про TCP/IP ничего не читалСложно создать "JDBC Thin" (class 4) драйвер ничего не читая про TCP/IP.
...
Рейтинг: 0 / 0
кидает ли Java исключение, если процесс потеряет связь с бд?
    #39498573
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovСложно создать "JDBC Thin" (class 4) драйвер ничего не читая про TCP/IP.Да легко. Вот десть довольно просто воспроизводимый кейс (хотя почему-то проблема существует только для Linux, а чтобы воспроизводилось на Windows никогда не видел): если сервер внезапно умер, то ОС должна на все открытые соединения послать RST, а клиенты почему-то эти RST не всегда получают (или java криво обрабатывает), в итоге соединения со стороны JVM зависают, а чтобы такого не было (т.е. не зависали соединения) нужно пользоваться keep alive, т.е. для жавских сокетов нужно делать setKeepAlive(true). Беглый анализ документации драйверов показывает примерно следующее:
в DB2 крутилка есть и включена по-умолчанию

в PostgreSQL крутилка есть, но не включена по-умолчанию

в MSSQL крутилки нет вообще и что-там влючено - хз
...
Рейтинг: 0 / 0
кидает ли Java исключение, если процесс потеряет связь с бд?
    #39498611
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфиловесли сервер внезапно умер, то ОС должна на все открытые соединения послать RSTКому должна? И, главное - почему?

P.S. Винда много чего делает ... По-своему.
Например, "обнуляет" интерфейс, сконфигурированный по DHCP, если вытащить кабель ... Но это ещё не повод.
...
Рейтинг: 0 / 0
кидает ли Java исключение, если процесс потеряет связь с бд?
    #39498619
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПанфиловЕсли вендор драйвера JDBC про TCP/IP ничего не читал, то может быть ситуация, что соединение тупо "зависнет", т.е. со стороны жавы вы будете видеть, что она что-то пытается получить от сервера, а сервер об этом соединении даже знать не будет.

Фантазия. Будет исключение SQLException в объекте Connection при выполнении операции с базой, например, Connection.execute().
Оно в свою очередь может показывать исключение базы данных (в случае тайм-аута). Чаще всего обрыв связи происходит от тайм-аута на стороне базы.
Проверить, что соединение работоспособно, можно с помощью Connection.isValid(), которое по-существу подаёт запрос к базе и смотрит, есть ли ответ. Впрочем, это уже писали. Если объект Connection неработоспособен, то надо его закрыть и создать новый. Другой способ - использование пула соединений.
...
Рейтинг: 0 / 0
кидает ли Java исключение, если процесс потеряет связь с бд?
    #39498730
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Partisan MФантазия. Будет исключение SQLException в объекте Connection при выполнении операции с базой, например, Connection.execute().С чего бы это вдруг? http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/#checkdeadpeers
...
Рейтинг: 0 / 0
кидает ли Java исключение, если процесс потеряет связь с бд?
    #39498836
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПанфиловС чего бы это вдруг?

Вообще-то я объяснил, с чего это. А именно - объект Connection при пропадании связи продолжает существовать, но становится неработоспособным. Это проявляется в том, что SQL команды не выполняются и при попытке их выполнения в этом объекте возникает исключение SQLException. Оно может быть частью цепочки исключений, где можно увидеть непосредственную причину исключения. Не понял, какое отношение к теме имеет ваша ссылка.
...
Рейтинг: 0 / 0
кидает ли Java исключение, если процесс потеряет связь с бд?
    #39498875
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Partisan M,
+1.
Чтобы было событие, нужно подписаться на него как минимум.
...
Рейтинг: 0 / 0
кидает ли Java исключение, если процесс потеряет связь с бд?
    #39499289
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Keep-alive - хорошая опция. Правда она не отвечает на вопрос автора.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / кидает ли Java исключение, если процесс потеряет связь с бд?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]