Можно ли использовать 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
Другие вопросы по тегам