使用windows service wrapper 将jar包注册成服务

通常我们想要在windows服务器上部署一个spring boot开发的接口服务,只需要控制台启动打包的jar文件即可,但是当服务出现异常挂掉或者重启服务器时服务不会重启,并且容易被误操作关掉控制台窗口,尤其时多个服务同时启动时。

由于之前用windows service wrapper将nginx注册成服务,所以想着是不是也可以将jar包注册成服务。

为什么不用java service wrapper呢?是的,网上大多数教程都是用的这个,并且我觉得这确实最符合的方法,毕竟是java程序。

这是因为我的服务器安装的java环境是64位的,但是windows环境的java service wrapper没有提供64位社区版(免费),只有32位有社区版,而专业版和标准版都是收费的,当然如果有破解的你也可以用这种方式。这种注册方式网上教程很多,这里不做介绍了。

接下来就说一下用 windows service wrapper 将jar包注册成服务的方式。

方式一:

下载地址:https://github.com/winsw/winsw/releases

下载的是v2.11.0   64位版本,-x64是64位的,-x86是32位的,根据自己的情况下载,至于下边.NET2,.NET4,.NET461没研究过。如要.NET Framework V4.0.30319下载https://download.csdn.net/download/u014644574/86401672

1.将下载的exe文件放到一个文件夹中,可以将文件重命名为自己想要的名字,然后创建一个xml文件,名称必须与exe文件名相同

2.xml文件内容

<?xml version="1.0" encoding="UTF-8" ?>
<service>
  <id>My Service Id</id>
  <name>My Service Name</name>
  <description>服务描述</description>
  <executable>java</executable>
  <logpath>C:\Application\service</logpath>
  <logmode>roll</logmode>
  <depend></depend>
  <workingdirectory>C:\Application\test</workingdirectory>
  <arguments>-jar test.jar</arguments>
</service>

3.xml配置信息介绍

id :服务id,自行设置,与其他服务id不一致即可

name:服务名称,也就是显示在服务列表里的名称

description:服务的描述

executable:需要启动的exe,我这里直接写了java,是因为配置了环境变量

logpath:日志路径,会保存windows service wrapper 的日志和启动jar包时控制台输出的日志

workingdirectory:工作目录,也就是启动jar包的路径,如果jar有外部配置文件要引用,这里一定要设置,否则将加载不到配置文件

arguments:启动参数

4.详细的xml文件配置项介绍可以看官方文档:https://github.com/winsw/winsw/blob/v3/docs/xml-config-file.md

5.配完成后,管理员身份启动cmd,切换到windows service wrapper目录,

安装命令 service.exe install,稍等几秒就会出现安装成功信息

卸载命令  service.exe uninstall

6.安装完成后,打开服务,找到自己的服务名称,启动即可

注意事项:

1.java一定要配置环境变量

2.由于注册的服务的真正启动的是windows service wrapper 的exe文件,所以如果将多个jar包注册成服务,就需要复制多份windows service wrapper分别配置注册

3.如果注册出错,可以查看logpath路径下的日志文件,启动服务出错可以查看事件查看器

方式二(自己使用的):

下载 WinSW.NET2.exe 地址https://download.csdn.net/download/u014644574/86401694
官网下载地址:https://github.com/winsw/winsw/releases

1.将下载的WinSW.NET2.exe文件放到一个文件夹中,可以将文件重命名为自己想要的名字,然后创建一个xml文件,名称必须与exe文件名相同。比如改名为my_jar_service.exe和my_jar_service.xml

2.xml文件内容

 
<service>
    <!-- 服务id,自行设置,与其他服务id不一致即可-->
    <id>my_jar_service</id>
    <!-- 服务名称,也就是显示在服务列表里的名称 -->
    <name>my_jar_service</name>
    <!-- 服务的描述 -->
    <description>定时任务调度</description>
    <!-- 需要启动的exe,我这里直接写了java,是因为配置了环境变量 -->
    <executable>java</executable>
    <!-- 要执行命令 -->
    <arguments>-jar "my_jar_service.jar"</arguments>
    <priority>Normal</priority>
    <stoptimeout>15 sec</stoptimeout>
    <stopparentprocessfirst>false</stopparentprocessfirst>
    <startmode>Automatic</startmode>
    <waithint>15 sec</waithint>
    <sleeptime>1 sec</sleeptime>
    <log mode="append"></log>
</service>

5.配完成后,管理员身份启动cmd,切换到my_jar_service.exe目录,

安装命令 my_jar_service.exe install

卸载命令  my_jar_service.exe uninstall

打开任务管理器查看服务

 

参考:

使用windows service wrapper 将jar包注册成服务 - Bug的Log - 博客园

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值