Можно ли использовать Apache Daemon для перезапуска приложения Java, если оно принудительно завершено?
Я ищу Apache Daemon, чтобы помочь мне с Java-приложением, и я просто хотел получить некоторые идеи / подсказки о том, что возможно.
Я хочу создать упрощенное приложение, которое показывает некоторую отказоустойчивую способность. Приложение будет последовательно проходить 4 шага (представьте, что на каждом шаге он выводит в простой текстовый файл только одну букву, например, шаг 1 - "A", шаг 2 - "B" и т. Д.), И я хотел бы чтобы иметь возможность принудительно завершить работу JVM, затем автоматически перезапустите java-приложение и возобновите печать (представьте, что это ребенок, потянув за вилку телевизора, и он снова включается).
Это возможно сделать через Apache Daemon? Если так, как бы я автоматизировал это? Нужно ли подключать какую-то третью программу на уровне операционной системы (например, простую программу на C, которая сама контролирует поток?).
На данном этапе я просто ищу указатели, так как понимаю, что не совсем понятно, что я буду делать. Я предпочитаю Windows, но у меня также есть Mac и я был бы открыт для использования Mac, если это лучше (я знаю, что у Linux есть некоторые уникальные инструменты / возможности). Любые советы / идеи приветствуются.
1 ответ
В Windows в прошлый раз я проверял, что он не управляется procrun (commmons-daemon), а управляется службой Windows.
Возможно, вам нужно настроить восстановление службы после установки демона
- sc ошибка%SERVICE_NAME% reset= 60 действий = перезагрузка / 30000
- sc failflag %SERVICE_NAME% 1
где% SERVICE_NAME% это... название вашей службы
логика возобновления должна быть в вашем приложении
Изменить: добавить больше контекста
См. https://commons.apache.org/proper/commons-daemon/procrun.html для установки службы в Windows.
при выдаче команд (вручную или с помощью сценария cmd)
пример:
set SERVICE_NAME=myService
prunsrv //IS//%SERVICE_NAME% --DisplayName="Test Service" \
--Install=prunsrv.exe --Jvm=auto --StartMode=jvm --StopMode=jvm \
--StartClass=org.apache.SomeStartClass --StartParams=arg1;arg2;arg3 \
--StopClass=org.apache.SomeStopClass --StopParams=arg1#arg2
добавить настройки восстановления после установки службы
бывший
sc failure %SERVICE_NAME% reset= 60 actions= restart/30000
sc failureflag %SERVICE_NAME% 1