java - 以编程方式重新启动可作为 Windows 服务运行的 Java 应用程序

标签 java windows service restart

我正在尝试让我的 Java 应用程序能够以编程方式自行重新启动。

当它作为独立应用程序执行时,我已经有了一个可行的解决方案 - 应用程序使用自己的类路径、jvm 参数、类名和命令行参数调用 java.exe;然后它退出(参见我的 stack overflow answer )。

但是,当应用程序作为 Windows 服务运行时,这种方法无法正常工作 - 我最终得到的是由 SYSTEM 帐户执行的 java.exe 进程,而不是重新启动的服务,并且服务的状态已停止(自从它退出以来)。因此应用程序确实重新启动,但不再是服务。

我知道Windows restarts services that exit with a non-zero exit codea) 我不确定它是否始终有效(请参阅 this 问题)b) 我不确定如何识别应用程序正在运行的事实首先作为 Windows 服务 - System.getProperty("user.name") 在我的测试中似乎只是返回主机名,后跟美元符号 ($)。

有人可以提出解决方案吗?

最佳答案

Launch4j包有一个 <restartOnCrash>服务参数。

关于java - 以编程方式重新启动可作为 Windows 服务运行的 Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27905498/

相关文章:

java - 将Retrofit服务声明分成多个接口(interface)

python - nltk StanfordNERTagger : NoClassDefFoundError: org/slf4j/LoggerFactory (In Windows)

windows - 运行 SML 文件但不处于交互模式

asp.net - 我们是否应该在 Asp.Net 应用程序中创建由应用程序本身调用的本地 Web 服务?

JavaFX - 如何使用 UI Controller 事件暂停后台服务?

java - 使用bat文件启动视频播放器,java窗口中出现失败消息

Java,如何即时写入文件

.net - 在选项卡中打开 .NET 插件

java - 如何让测试等待 Vert.x Verticle 部署完成

java - 我无法使用删除(int)方法,符号未找到错误