使用winsw将springboot jar以windows服务的方式运行
以前有记录过使用 .bat文件方式来完成
windows环境下后台运行jar包
步骤相对比较麻烦,后期维护也不方便。这里我新了解到了一些工具 winsw、nssm
,它们都可以更为方便在windows环境下去运行jar。
这里主要讲解 winsw
使用方式,nssm
工具使用方式也很容易,可以自行百度。
一、背景
因为网络限制,目前开发的一个SpringBoot项目不能部署到Linux设备上,必须要部署到Windows上。
在Linux上,后台启动SpringBoot项目只需要一条命令:nohup sh run.sh &,run.sh脚本包含了启动SpringBoot项目的命令。
在windows上,后台启动SpringBoot项目貌似就比较尴尬,没有那么好用的命令来后台启动项目。有着以下的缺点:
- 需要打开命令行窗口输入命令行才可运行,很不方便(或需要编写.bat文件)
- 需要停止程序时只能在任务管理器中结束,并且多个这样程序运行时无法从进程名中进行区分(或需要编写.bat文件)
- 服务启重启后,程序无法实现自启动
- 打成war包放到Tomcat等web容器中就浪费了SpringBoot内嵌web容器的优势。
为了改善以上缺点,所以使用winsw将springboot部署成Windows服务。
二、winsw简介
winsw
是一个可以将任何应用程序注册成服务的软件。下载地址:winsw
注意:在安装
winsw
前,window要有.net framework4
,否则后面会出问题。(现在电脑都有,可以查看一下版本)
2.1 如何查看.net版本
进入C:\Windows\Microsoft.NET\Framework
2.2 下载winsw
打开下载地址,下载2.11.0版。
现在是2022.6.29,现在最新版为2.11.0,网页中3.0.0为预发布。
2.3 打包jar
SpringBoot
项目通过执行mvn clean package
命令后得到可执行jar包:test-0.0.1.jar
。(测试用,具体名称在pom.xml文件中定义)
2.4 修改下载的winsw文件
将 sample-minimal.xml
和 WinSW.NET4.exe
改为 test-0.0.1.xml
和 test-0.0.1.exe
,文件名保持一致,方便后续操作。(jar包、.exe文件、.xml文件均在同一目录下)
如:
1 | 创建一个test目录,将jar包、.exe文件、.xml文件均在放在test目录下 |
2.5 修改test-0.0.1.xml文件
1 | <configuration> |
到此就完成了配置,可以安装并启动服务了
2.6 安装、删除、启动、停止服务
为了方便以后不用老是打指令可以编写4个.bat
文件
进入到三个文件的目标目录,我这里就是进入test目录下,分别创建stop.bat
、start.bat
、服务删除.bat
、服务注册.bat
。
目录结构:
1 | -test |
start.bat文件内容(启动)版本
1 | net start test-0.0.1 |
stop.bat文件内容(停止)
1 | net stop test-0.0.1 |
服务删除.bat文件内容
1 | sc delete test-0.0.1 |
服务注册.bat文件内容
1 | test-0.0.1.exe install |
2.7 运行
- 先点击
服务注册.bat
。 - 安装注册成功后,我们点击
start.bat
来启动服务。当然,也可以通过在cmd命令行那里输入:services.msc命令直接进入服务界面,通过服务ID找到服务,然后手动启动。 - 启动服务成功后,就可以访问项目了。
- 点击
stop.bat
来停止服务。 - 点击
服务删除.bat
来删除服务。