将JAR作为Windows服务运行

时间:2013-02-27 14:33:56

标签: java jar windows-services

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

我已经有一个外部lib目录的JAR,我可以使用java -jar My.jar启动它,然后停留Ctrl+C

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

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

更新:我成功同时使用procrun(最后)和手动.net服务包装器......以下是我的install.bat的procrun版本的代码:

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所在的目录
  • 运行此命令
  • jar有它的工作MANIFEST.MF
  • 你有注册到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

3 个答案:

答案 0 :(得分:7)

试试这个java启动器

http://winrun4j.sourceforge.net/

免费和开源

在页面末尾启动服务示例

答案 1 :(得分:5)

答案 2 :(得分:4)

您可以使用Java Service Wrapper

http://wrapper.tanukisoftware.com/doc/english/download.jsp

他们不分发编译的x86_64 Windows版本的Comunity Edition,但你可以自己构建它。