Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Работа с сетью > Событие отсоединения


Автор: Elfix 16.11.2007, 16:12
Привет. Работаю с сетью в качестве клиента по протоколу TCP через класс Socket. Бывают ситуации, когда сервер отключается от сети, а клиент должен как то на это отреагировать. Возможно ли организовать такой подход: если сервер упал, тогда клиент должен перезагрузиться (выгрузиться и загрузиться снова).

Та же ситуация с MySQL. Бывает, что сервер где хостится MySQL тоже выпадает. Нужно чтобы если СУБД упала, клиент сделал бы попытку восстановить с ним соединение. Работаю с MySQL через mysql-connector-java-5.1.5.

Уже бесконечно благодарен!  smile 

Автор: COVD 16.11.2007, 16:39
Любое соединение проще мониторить извне, на уровне приложения - периодически проверять работоспособность тестовым сигналом или запросом в отдельном потоке. 

Автор: Elfix 16.11.2007, 17:10
Не понял ничего...
Зачем из вне что-то мониторить? На каждую программу какой-то монитор дополнительно ставить. Не проще было бы всю функциональность однажды заключить в своей программе и заботиться лишь о ее запуске однажды? Не очень хорошо знаю яву, скорее быстрыми темпами пытаюсь переписать программу, параллельно изучая новый для себя язык. Поэтом очень тяжко пока все дается, особенно без примеров...

Автор: COVD 16.11.2007, 18:17
"Извне" - в смысле, не уповать на встроенную диагностику сокетов и драйверов баз данных, а организовывать поверх их, на уровне приложения, простые регулярные проверки соединений. Исполнять в отдельном потоке, который запускается при старте приложения и проверяет раз в минуту, например, все соединения. Это актуально в приложениях, использующих постоянные соединения. 

Данная проблема не является специфической для java.

Если вы применяете для работы с базой данных готовое решение в виде пула соединений, то, возможно, там это уже внутри все сделано.    

Автор: Elfix 17.11.2007, 03:27
Вот еще бы несколько строк кода и мои недопонимания исчерпали бы себя окончательно  smile 

Автор: COVD 19.11.2007, 16:36
В нескольких строках кода можно только показать, как запустить отдельный поток, который периодически что-то делает (проверяет соединение с базой или сервером). Вы про это? 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)