我有一个使用 procrun(特别是 prunsrv)作为 Windows 服务运行的 Java 应用程序。该服务定义为 exe StartMode,因此批处理文件 (run-my-app.bat) 作为 StartImage 运行。为什么我不使用 jvm 或 java 模式是另一回事,与这个问题无关(我无法使用 procrun 运行 spring boot 应用程序,所有示例都不起作用,所以我求助于创建一个批处理文件并调用 java -jar my 。罐)。prunsrv.exe 实际上是根据应用程序重命名的,比如 myapp.exe。问题是如果 myapp.exe 通过任务管理器被杀死,java 进程仍然存在!批处理文件 run-my-app.bat 使用以下行运行应用程序:
start "%APP_NAME%" /b "%JAVA_EXE%" -jar myapp.jar --spring.config.location=application.properties --logging.config=log4j2.xml
批处理文件完成并且启动的 Java 进程仍然存在 - 我知道这一点,因为如果我在上述“启动”命令之后打印一条消息,我会在日志中看到该消息。
当 prunsrv.exe(重命名为 myapp.exe)被杀死时,有什么方法可以停止 java 进程?