我正在尝试让我的 Java 应用程序能够以编程方式自行重新启动。
当它作为独立应用程序执行时,我已经有了一个可行的解决方案 - 应用程序使用自己的类路径、jvm 参数、类名和命令行参数调用 java.exe;然后它退出(参见我的 stack overflow answer )。
但是,当应用程序作为 Windows 服务运行时,这种方法无法正常工作 - 我最终得到的是由 SYSTEM 帐户执行的 java.exe 进程,而不是重新启动的服务,并且服务的状态已停止(自从它退出以来)。因此应用程序确实重新启动,但不再是服务。
我知道Windows restarts services that exit with a non-zero exit code但 a) 我不确定它是否始终有效(请参阅 this 问题)b) 我不确定如何识别应用程序正在运行的事实首先作为 Windows 服务 - System.getProperty("user.name")
在我的测试中似乎只是返回主机名,后跟美元符号 ($)。
有人可以提出解决方案吗?
最佳答案
Launch4j包有一个 <restartOnCrash>
服务参数。
关于java - 以编程方式重新启动可作为 Windows 服务运行的 Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27905498/