|
|
|
кидает ли Java исключение, если процесс потеряет связь с бд?
|
|||
|---|---|---|---|
|
#18+
кидает ли Java исключение, если процесс потеряет связь с бд? какой класс используется для такой ошибки? SQLException? Заранее спасибо за ответы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 22:35 |
|
||
|
кидает ли Java исключение, если процесс потеряет связь с бд?
|
|||
|---|---|---|---|
|
#18+
1) Java не умеет работать с БД из коробки. Но она декларирует интерфейсы в пакете java.sql.* которые (обычно) имеют массу кастомных реализаций. Например ojdbcXX.jar для Oracle. Реализации вы сами предоставляете вашему приложению через classpath. 2) Непонятно о каком процессе идет речь. Все процессы вы сами кодите. Вы можете использовать метод Connection::isValid(..) для проверки доступна БД в данную секунду или нет. Реализация этого метода опять-же специфичная не к Java а к драйверу БД и обычно содержит SELECT 1 из какой-то таблички. 3) Принудительно каждую секунду пинговать или дергать БД из клиентского приложения считается дурным тоном. По крайней мере вы вступите в противостояние с ДБА который обслуживает дееспособность системы. Или вы будете объяснять ему причину такой активности. Обрабатывайте исключение по факту исполнения полезной работы. БД и драйвер в состоянии покоя обычно не спрашивают друг друга ни о чем и ничего не проверяют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 00:34 |
|
||
|
кидает ли Java исключение, если процесс потеряет связь с бд?
|
|||
|---|---|---|---|
|
#18+
noob1111, Ну вообще если Вы работаете с субд(Например через JDBC). И связь с базой потерялась(Выдернули кабель из свича или потушили сервер)... Сразу исключение не будет.Но как только вы обратитесь к СУБД.(Перечитать анные...получить новые) сразу получите исключение...например soceket timeout.. (Говорю про oracle и DB2...думаю у большинство остальных поведение такое же) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 10:45 |
|
||
|
кидает ли Java исключение, если процесс потеряет связь с бд?
|
|||
|---|---|---|---|
|
#18+
noob1111, Если это не тест вопрос, то вам все равно надо сделать общий обработчик exception c выводом сообщнний. Вот у оракле по номеру ORA:1234 вы и узнаете что именно с коннектом. Так что события нету и проверка комплексная индивидуальная для бд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 12:19 |
|
||
|
кидает ли Java исключение, если процесс потеряет связь с бд?
|
|||
|---|---|---|---|
|
#18+
noob1111, исключение по любому будет, запусти программу которая работает с бд, а потом отключи сервер бд - получишь исключение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 17:00 |
|
||
|
кидает ли Java исключение, если процесс потеряет связь с бд?
|
|||
|---|---|---|---|
|
#18+
rema174noob1111, исключение по любому будет, запусти программу которая работает с бд, а потом отключи сервер бд - получишь исключение Если (в терминологии ТС) Java его перехватит, то не получит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 17:01 |
|
||
|
кидает ли Java исключение, если процесс потеряет связь с бд?
|
|||
|---|---|---|---|
|
#18+
Blazkowiczrema174noob1111, исключение по любому будет, запусти программу которая работает с бд, а потом отключи сервер бд - получишь исключение Если (в терминологии ТС) Java его перехватит, то не получит. этож надо, чтобы тс его перхватил, - джава ж сама ничего не перехватывает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 17:04 |
|
||
|
кидает ли Java исключение, если процесс потеряет связь с бд?
|
|||
|---|---|---|---|
|
#18+
noob1111кидает ли Java исключение, если процесс потеряет связь с бд? какой класс используется для такой ошибки? SQLException? Заранее спасибо за ответы)Если вендор драйвера JDBC про TCP/IP ничего не читал, то может быть ситуация, что соединение тупо "зависнет", т.е. со стороны жавы вы будете видеть, что она что-то пытается получить от сервера, а сервер об этом соединении даже знать не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 17:16 |
|
||
|
кидает ли Java исключение, если процесс потеряет связь с бд?
|
|||
|---|---|---|---|
|
#18+
rema174этож надо, чтобы тс его перхватил, - джава ж сама ничего не перехватывает... Пул может сам перехватить. В терминологии ТС это тоже Java. Если соединение можно восстановить, не обязательно выкидывать исключение наружу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 17:17 |
|
||
|
кидает ли Java исключение, если процесс потеряет связь с бд?
|
|||
|---|---|---|---|
|
#18+
Андрей ПанфиловЕсли вендор драйвера JDBC про TCP/IP ничего не читалСложно создать "JDBC Thin" (class 4) драйвер ничего не читая про TCP/IP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 17:37 |
|
||
|
кидает ли Java исключение, если процесс потеряет связь с бд?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovСложно создать "JDBC Thin" (class 4) драйвер ничего не читая про TCP/IP.Да легко. Вот десть довольно просто воспроизводимый кейс (хотя почему-то проблема существует только для Linux, а чтобы воспроизводилось на Windows никогда не видел): если сервер внезапно умер, то ОС должна на все открытые соединения послать RST, а клиенты почему-то эти RST не всегда получают (или java криво обрабатывает), в итоге соединения со стороны JVM зависают, а чтобы такого не было (т.е. не зависали соединения) нужно пользоваться keep alive, т.е. для жавских сокетов нужно делать setKeepAlive(true). Беглый анализ документации драйверов показывает примерно следующее: в DB2 крутилка есть и включена по-умолчанию в PostgreSQL крутилка есть, но не включена по-умолчанию в MSSQL крутилки нет вообще и что-там влючено - хз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 18:19 |
|
||
|
кидает ли Java исключение, если процесс потеряет связь с бд?
|
|||
|---|---|---|---|
|
#18+
Андрей Панфиловесли сервер внезапно умер, то ОС должна на все открытые соединения послать RSTКому должна? И, главное - почему? P.S. Винда много чего делает ... По-своему. Например, "обнуляет" интерфейс, сконфигурированный по DHCP, если вытащить кабель ... Но это ещё не повод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 19:42 |
|
||
|
кидает ли Java исключение, если процесс потеряет связь с бд?
|
|||
|---|---|---|---|
|
#18+
Андрей ПанфиловЕсли вендор драйвера JDBC про TCP/IP ничего не читал, то может быть ситуация, что соединение тупо "зависнет", т.е. со стороны жавы вы будете видеть, что она что-то пытается получить от сервера, а сервер об этом соединении даже знать не будет. Фантазия. Будет исключение SQLException в объекте Connection при выполнении операции с базой, например, Connection.execute(). Оно в свою очередь может показывать исключение базы данных (в случае тайм-аута). Чаще всего обрыв связи происходит от тайм-аута на стороне базы. Проверить, что соединение работоспособно, можно с помощью Connection.isValid(), которое по-существу подаёт запрос к базе и смотрит, есть ли ответ. Впрочем, это уже писали. Если объект Connection неработоспособен, то надо его закрыть и создать новый. Другой способ - использование пула соединений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 19:59 |
|
||
|
кидает ли Java исключение, если процесс потеряет связь с бд?
|
|||
|---|---|---|---|
|
#18+
Partisan MФантазия. Будет исключение SQLException в объекте Connection при выполнении операции с базой, например, Connection.execute().С чего бы это вдруг? http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/#checkdeadpeers ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 03:52 |
|
||
|
кидает ли Java исключение, если процесс потеряет связь с бд?
|
|||
|---|---|---|---|
|
#18+
Андрей ПанфиловС чего бы это вдруг? Вообще-то я объяснил, с чего это. А именно - объект Connection при пропадании связи продолжает существовать, но становится неработоспособным. Это проявляется в том, что SQL команды не выполняются и при попытке их выполнения в этом объекте возникает исключение SQLException. Оно может быть частью цепочки исключений, где можно увидеть непосредственную причину исключения. Не понял, какое отношение к теме имеет ваша ссылка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 10:15 |
|
||
|
кидает ли Java исключение, если процесс потеряет связь с бд?
|
|||
|---|---|---|---|
|
#18+
Partisan M, +1. Чтобы было событие, нужно подписаться на него как минимум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 11:16 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39498290&tid=2122706]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 333ms |

| 0 / 0 |
