将 JAR 作为 Windows 服务运行

2022-09-03 14:39:46

我有一个JAR文件,我想注册并将其作为Windows服务运行。使用配置良好的JAR和已经注册的JVM关闭钩子,这样做应该不是一件大事。

我已经有一个带有外部dir的JAR,我可以以开始它,并以.libjava -jar My.jarCtrl+C

我还检查了Apache的JSL,JSmooth和procrun,但没有有效的解决方案。

我需要一个带有良好教程的工作解决方案。

更新:我成功地完成了procrun(最后)和手动.net服务包装器......以下是我的安装的procrun版本的代码.bat:

set PR_PATH=%CD%
SET PR_SERVICE_NAME=MyService
SET PR_JAR=MyService.jar
SET START_CLASS=org.my.Main
SET START_METHOD=main
SET STOP_CLASS=java.lang.System
SET STOP_METHOD=exit
rem ; separated values
SET STOP_PARAMS=0
rem ; separated values
SET JVM_OPTIONS=-Dapp.home=%PR_PATH%
prunsrv.exe //IS//%PR_SERVICE_NAME% --Install="%PR_PATH%\prunsrv.exe" --Jvm=auto --Startup=auto --StartMode=jvm --StartClass=%START_CLASS% --StartMethod=%START_METHOD% --StopMode=jvm --StopClass=%STOP_CLASS% --StopMethod=%STOP_METHOD% ++StopParams=%STOP_PARAMS% --Classpath="%PR_PATH%\%PR_JAR%" --DisplayName="%PR_SERVICE_NAME%" ++JvmOptions=%JVM_OPTIONS%

我推测

  • 从 jar 和 prunsrv.exe 所在的同一目录运行此命令
  • 罐子有其工作清单。中频
  • 并且你已经在JVM中注册了关闭钩子(例如,在Spring中使用 context.registerShutdownHook())...
  • 不对 jar 外部的文件使用相对路径(例如,log4j 应与 log4j.appender.X.File=${app.home}/logs/my.log 或类似内容一起使用)

感谢 apache procrun 团队 (http://commons.apache.org/proper/commons-daemon//procrun.html) 和 marifnst (http://a089lp.wordpress.com/tag/procrun-tutorial/)

更新2:一个新的好教程与 winsv: https://dzone.com/articles/spring-boot-as-a-windows-service-in-5-minutes


答案 1

试试这个java启动器

http://winrun4j.sourceforge.net/

免费和开源

在页面末尾启动服务示例


推荐