java - 将 JAR 作为 Windows 服务运行

标签 java jar windows-services

<分区>

我有一个 JAR 文件,我想将其注册并作为 Windows 服务运行。使用配置良好的 JAR 和已经注册的 JVM 关闭 Hook ,执行此操作应该不是什么大工作。

我已经有了一个带有外部 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
  • 并且您已将关闭 Hook 注册到 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

最佳答案

试试这个 java 启动器

http://winrun4j.sourceforge.net/

免费和开源

在页尾开始服务示例

关于java - 将 JAR 作为 Windows 服务运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15114674/

相关文章:

java - 如何将数据更新到主存?

jar - Java编译器多平台

java - Raspberry Pi Java 关闭 Hook

c# - 为 c :\program files\company\app\file for all users 设置文件权限

java - 对 Java 中的方法调用进行签名和验证

java - getruntime() exec() 命令中带双引号

java - JDBC/Java 应用程序端口扫描?

java - 如何上传jar到仓库?

c# - .NET 控制台应用程序作为 Windows 服务

sql-server - windows服务sql连接问题