java生成windows服务_如何从Java jar创建Windows服务?

如何从Java jar创建Windows服务?

我有一个可执行的JAR文件。 是否可以创建该JAR的Windows服务? 实际上,我只想在启动时运行它,但是我不想将该JAR文件放在启动文件夹中,也不要放在注册表中。

8个解决方案

46 votes

到目前为止,我找到的最简单的解决方案是非吸吮服务管理器

用法是

nssm install "C:\Program Files\Java\jre7\java.exe" "-jar "

kopernik answered 2019-12-30T02:49:46Z

17 votes

使用nssm.exe,但请记住设置AppDirectory,否则将无法访问任何必需的库或资源。 缺省情况下,nssm将当前工作目录设置为应用程序的目录java.exe,而不是jar。这样做创建一个批处理脚本:

pushd

nssm.exe install "" "" "-jar "

nssm.exe set "" AppDirectory ""

这应该可以解决服务暂停的问题。

gcerkez answered 2019-12-30T02:50:11Z

16 votes

本文应该告诉您所有您需要了解的内容:“将Java应用程序作为Windows服务运行”; 它提到使用“ Java Service Wrapper”(有一个名为YAJSW的社区版本)

Adrian answered 2019-12-30T02:49:22Z

10 votes

我一直在尝试使用Apache Commons Daemon。 它支持Windows(Procrun)和Unix(Jsvc)。 Advanced Installer提供了Java Service教程,并带有示例项目供下载。 如果让他们的javaservice.jar作为Windows服务运行,则可以使用“ telnet 4444”对其进行测试。 我使用他们的示例是因为我的重点是运行Java Windows服务,而不是编写Java。

mcdon answered 2019-12-30T02:50:31Z

7 votes

Tanuki不久前更改了jsw的许可证,如果我要开始一个项目,我将使用Yet Another Java Service Wrapper [http://yajsw.sourceforge.net/],它或多或少是一个模仿JWS的开源实现。 ,然后在此基础上进行进一步改进。

编辑:几年来,我一直在多个平台(Windows,多个Linux ...)上使用YAJSW,这很棒,开发正在进行中。

Persimmonium answered 2019-12-30T02:50:56Z

3 votes

使用procrun,您需要将prunsrv复制到应用程序目录(下载),并创建一个install.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所在的目录运行此文件

罐子有其工作的MANIFEST.MF

并且您已经将关闭挂钩注册到JVM中(例如,在Spring中使用context.registerShutdownHook())...

不对jar外部的文件使用相对路径(例如,log4j应该与log4j.appender.X.File = $ {app.home} /logs/my.log或类似文件一起使用)

查看procrun手册和本教程以获取更多信息。

BTakacs answered 2019-12-30T02:51:42Z

1 votes

我们为此使用了Tanuki服务包装器。 这是非常可配置的。

jqno answered 2019-12-30T02:52:02Z

1 votes

另一种选择是winsw:[https://github.com/kohsuke/winsw/]

配置一个xml文件以指定服务名称,执行内容,任何参数等。然后使用exe进行安装。 范例XML:[https://github.com/kohsuke/winsw/tree/master/examples]

我更喜欢nssm,因为它是一个轻量级的exe。 并且配置xml易于共享/提交给源代码。

PS通过运行your-service.exe install安装服务

manyways answered 2019-12-30T02:52:35Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值