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

如果Java应用程序被强制关闭,是否可以使用Apache守护程序重新启动它?,java,apache-commons-daemon,Java,Apache Commons Daemon,我正在研究Apache Daemon以帮助我使用Java应用程序,我只是想了解一些关于可能的想法/提示 我想创建一个简化的应用程序,显示某种故障保护功能。应用程序将按顺序执行4个步骤(假设它在每个步骤中打印出一个简单的文本文件,就像步骤1是“a”,步骤2是“B”,等等),我希望能够强制关闭JVM,然后让它自动重新启动java应用程序并恢复打印(想象一下,就像一个孩子拔下电视插头,电视又自动打开一样) 这是否可以通过Apache Daemon实现?如果可以,我将如何实现自动化?我是否需要在操作系统

我正在研究Apache Daemon以帮助我使用Java应用程序,我只是想了解一些关于可能的想法/提示

我想创建一个简化的应用程序,显示某种故障保护功能。应用程序将按顺序执行4个步骤(假设它在每个步骤中打印出一个简单的文本文件,就像步骤1是“a”,步骤2是“B”,等等),我希望能够强制关闭JVM,然后让它自动重新启动java应用程序并恢复打印(想象一下,就像一个孩子拔下电视插头,电视又自动打开一样)

这是否可以通过Apache Daemon实现?如果可以,我将如何实现自动化?我是否需要在操作系统级别附加第三个程序(例如一个本身监视流的简单C程序?)

在这个阶段,我只是在寻找一些建议,因为我意识到我不太清楚我会做什么。我更喜欢Windows,但我也有一台Mac电脑,如果Mac电脑更好的话,我也愿意使用Mac电脑(我知道Linux有一些独特的工具/功能)。任何提示/想法都值得赞赏


在windows上,上次我检查它不是由procrun(commmons守护程序)管理的,而是由windows服务管理

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

  • sc故障%SERVICE\u NAME%reset=60操作=重新启动/30000
  • sc故障标志%1服务\u名称%1
其中%SERVICE\u NAME%是……您的服务名称

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

编辑:添加更多上下文

有关windows上的服务安装,请参阅

发出命令时(手动或使用cmd脚本)

例:

在服务安装后添加恢复设置


如果这是一个后台作业,作为Windows服务运行,然后在Windows中内置故障时重新启动,您只需要在服务设置中定义它。至于“恢复”逻辑,您必须用Java编写,并不断更新外部资源(同步)为了确保状态被保存,由于使用任务管理器终止进程而导致的强制关机将不会运行任何关机挂钩。@Andreas-明白。我计划使用日志文件保存状态。感谢!@Andreas-关于“不断更新外部资源(同步)以确保状态被保存”,您认为一个简单的文本日志文件就足够了吗?或者我需要使用MySQL之类的工具吗?请详细说明这一点-
在安装守护程序后配置服务恢复
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