由于通过java -jar方式启动的springboot程序需要有一个cmd窗口,无法实现Linux上nohup命令的后台运行效果。所以需要将开发的springboot程序注册成windows服务,实现开机自启和无窗口运行。
下载WinSW.NET4.exe
下载地址:https://github.com/kohsuke/winsw/releases
此文件下载完成之后需要与程序放在同级目录,并修改名称为 程序名.exe。
创建初始化服务的xml文件
创建一个xml文件,此xml文件也需要与程序同名,用于初始化服务。内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<service>
<!-- 服务ID -->
<id>win-demo</id>
<!-- 服务名称 -->
<name>win-demo</name>
<!-- 服务描述 -->
<description>win-demo Service</description>
<!-- jar包运行参数,指定运行程序的jdk位置 -->
<executable>D:\Dev\jdk_8u_101\bin\java.exe</executable>
<!-- -jar之后是jar包名称 -->
<arguments>-Xrs -Xmx512m -jar win-demo.jar</arguments>
<!-- 日志配置 -->
<logpath>D:\temp\log</logpath>
<logmode>rotate</logmode>
</service>
此时目录下的内容如下:
初始化服务
使用管理员身份打开cmd窗口,注意一定要使用管理员身份打开,否则服务无法启动时无法删除服务。
进入程序目录
使用 win-demo.exe install
命令安装服务,未出现错误信息即代表安装成功。如果提示错误信息,检查exe,jar,xml文件名是否完全一致,文件后缀名是否有打开显示,以及xml文件中的内容是否无误。
安装成功之后打开服务面板,可以看到已经安装成功的服务。
选中服务,右键属性打开,可以在启动类型选择是否开机自启,根据自己的需求来调整。关掉窗口,选中服务,右键启动即可运行springboot程序,状态显示 正在运行
则表示启动成功,程序在后台运行,无cmd窗口,实现所需效果。
访问接口,得到所需结果,证明程序可以正常运行。
服务更新和删除
更新程序只需要到服务列表右键停止就好了,然后把新的jar包放到目录下,再回到服务列表右键重新启动服务即可完成更新。需要注意的时更新的jar包名称必须与原名称保持一致,否则服务无法启动。
删除服务需要使用管理员身份打开cmd窗口,使用 sc delete win-demo
命令删除服务,win-demo 需要更换为自己的服务名称。