如果 Java 应用程序被强行关闭,是否可以使用 Apache Daemon 重新启动它?

Can Apache Daemon be used to restart a Java application if it is forcibly shutdown?

我正在研究 Apache Daemon 来帮助我开发 Java 应用程序,我只是想了解一些 ideas/hints 的可能性。

我想创建一个显示某种故障保护能力的简化应用程序。该应用程序将按顺序执行 4 个步骤(假设它在每个步骤中打印一个简单的文本文件只是一个字母,例如第 1 步是 "A",第 2 步是 "B" 等),我希望能够强行关闭 JVM,然后让它自动重启 java 应用程序并恢复打印输出(想象一下 child 拔掉电视的插头然后它打开又是自己)。

这可以通过 Apache Daemon 完成吗?如果是这样,我将如何自动化?我是否需要在 operating-system 级别附加一些 third-program(就像一个简单的 C 程序本身监控流程?)。

在这个阶段我只是在寻找指点,因为我意识到我并不清楚我会做什么。我更喜欢 Windows,但我也有一个 Mac,如果更好的话,我愿意使用 Mac(我知道 Linux 有一些独特的 tools/abilities ).任何 tips/ideas 表示赞赏。

So far, I have tried using this tutorial here for help, which has been useful but not as thorough as I need.

在 windows,上次我检查它不是由 procrun(commmons-daemon)管理,而是由 windows 服务管理。

您可能需要在守护程序安装后配置服务恢复

  • sc 失败 %SERVICE_NAME% reset= 60 actions= restart/30000
  • sc 故障标志 %SERVICE_NAME% 1

其中 %SERVICE_NAME% 是...您的服务名称

简历逻辑应该在您的应用程序中

编辑:添加更多上下文

windows

上的服务安装见https://commons.apache.org/proper/commons-daemon/procrun.html

发出命令时(手动或使用 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