Назад | Перейти на главную страницу

Служба Windows - Java не работает, процесс обслуживания - нет, никто не знает, что произошел сбой

У нас есть веб-прокси, работающий как служба. Это обычный EXE, внутри него упакованное Java-приложение.

Иногда мы получаем это в файле журнала, создаваемом приложением, и прокси перестает работать.

26-11-2013 09: 42: 48,661 [ServerThread] ОШИБКА pe - Невозможно запустить сервер java.net.SocketException: Ошибка нераспознанных сокетов Windows: 0: JVM_Bind в java.net.PlainSocketImpl.socketBind (собственный метод) на java.net .PlainSocketImpl.bind (PlainSocketImpl.java:365) на java.net.ServerSocket.bind (ServerSocket.java:319) на java.net.ServerSocket. (ServerSocket.java:185) на java.net.ServerSocket. (ServerSocket. java: 141) в pe.a (Неизвестный источник) в oe.run (Неизвестный источник)

Но EXE продолжает работать. Есть ли какой-либо общий способ заставить EXE сбой при возникновении этого сбоя Java, чтобы сработала собственная способность Windows перезапускать сбойные службы? Очевидно, что если поставщик программного обеспечения должен это встроить, вы, любезный читатель, не узнаете ответ. Мне просто интересно, есть ли флаг Java, о котором я не знаю.

Похоже, он был построен с прокручивать, Думаю. Я говорю это на основе запуска strings.exe в файле connector.exe.

Я знаю, что более полным решением будет мониторинг файлов журнала с предупреждениями и возможным автоматическим исправлением. Однако сегодня я не могу это сделать.

Это одна из тех типичных неприятных ошибок, с которыми мы сталкиваемся как системные администраторы. Процессы запущены и работают, пока функция / приложение не работает.

Вы можете использовать два разных подхода:

  1. Следите за лог-файлом и реагируйте на типичные ошибочные ситуации
  2. На сервере отслеживайте работоспособность сервиса и реагируйте на сбой

В обеих ситуациях нужно избегать ложных срабатываний.

Правильной реакцией будет перезапуск службы, который вы должны запустить, что, надеюсь, сработает в вашей ситуации.