奇葩需求:springboot项目注册为windows系统服务并设置开机自启

共 2211字,需浏览 5分钟

 ·

2020-09-24 00:13

f4c1df9a4c88bb75132d62f0c2928981.webp程序员的成长之路互联网/程序员/技术/资料共享 关注


阅读本文大概需要 4 分钟。

作者:双主双机热备

来源:http://suo.im/5yPoPJ

关于springboot项目的部署与SSM(框架)部署war包到Tomcat下有所不同,比较明显的是springboot打包为jar包,运行则是执行通过java -jar xxx.jar,不再需要放置在Tomcat下面运行。关于springboot项目部署相对于之前简化了一些步骤,只需要在服务器中安装好jdk环境,然后执行java -jar xxx.jar就可以把项目跑起来,如下所示。我们通过传统--->改进版--->改进版plus--->最终版演变方式来一步步探讨一下。

1、方式一(传统版)

(1)假设这是window服务器,D盘中有一个名为demo-0.0.1-SNAPSHOT.jar项目

dcfccfaa6aa6adc4ba59ab11937682d4.webp

(2)打开cmd,运行项目。

21d288f7c13558fa18dcb316e9ba51cb.webp

端口:9527/:去项目名

46b492df06cf37d6d50832a29d4dc8ad.webp

(3)实际测试项目(demo-0.0.1-SNAPSHOT.jar)中的一个接口

7b5094423cf5a01bddf529f20044b56e.webp

(4)测试访问

997b4bab04d4c43f16add8ce5fd45850.webp

2、改进版

以上方式运行项目还需要手动进入cmd输入命令,相对来说比较麻烦。下面我们可以通过一个bat脚本来实现这个功能。(1)脚本内容,比较简单。

b76add1e0297351d41f95eae9053d5df.webp

(2)执行cmd脚本

80ae955b958963b5c8f40231feb53527.webp

(3)测试访问

fde313d44083d02c79129ece276474c1.webp

3、 改进版plus

关于以上的两种方式不能满足开机自启动需求。假设服务器宕机,重启启动服务还需要人工操作。所以下面我们利用windows启动菜单添加快捷方式来完成开机自启的需求。(1)win+R打开运行窗口,输入shell:startup

22fabc1c58a7311b461ff1fa3eb28203.webp

(2)将步骤2的脚本start.cmd新建一个快捷方式,然后将快捷方式拷贝到启动项文件中。

b47f51d9174f4b4d7c86193c39b48c17.webp

(3)重启电脑进行测试,自行操作。

4、 最终版

关于以上的3种方式都有一个通病:一直显示着一个CMD窗口,而且这个窗口不能关,关了程序就停了。继而引出了我们今天的主角:可以将Windows上的任何一个程序注册为服务的工具--winsw关于winsw官方发言:WinSW is an executable binary, which can be used to wrap and manage a custom process as a Windows service.WinSW是一个可执行的二进制文件,可用于将自定义进程包装和管理为Windows服务。下载地址:https://github.com/kohsuke/winsw/releases源码地址:https://github.com/kohsuke/winsw (1)工具下载以下两个版本:WinSW.NET4.exe:支持.netframework4.0的版本,如果没有4.0,请先安装.net4.0。如下图:

e76fb6ee791b675bc571d17e0215c77a.webp

这里以WinSW.NET2.exe为例。

cbb059a4397d26d03e31638d5ae1f636.webp

下载到桌面WinSW.NET2.exe

cc6f419c778cd7a490e3bac578217dfc.webp

(2)将WinSW.NET2.exe改名成启动服务名字(便于理解、使用)。如:将WinSW.NET2.exe改成springbootDemo.exe (3)新建一个WinSW的xml配置文件 注意:XML文件要和程序名同名,所以这里名为springbootDemo.xml(4)将我们的springboot项目(demo-0.0.1-SNAPSHOT.jar)和springbootDemo.xml文件、springbootDemo.exe工具放置到同一个目录中。

03ca76b81d27d1024bdbff4f6eda1810.webp

(5)编写springbootDemo.xml配置文件,如下所示:


springbootDemo

springbootDemo

This is springbootDemo service.

"JAVA_HOME" value="%JAVA_HOME%"/>

java

-jar "D:\springboot-service\demo-0.0.1-SNAPSHOT.jar"

Automatic

%BASE%\log

rotate


e501f7a0a82ae59653ed0c65717a40dc.webp

下面是配置文件用到的标签的简单解释






springbootDemo



springbootDemo



This is springbootDemo service.



"JAVA_HOME" value="%JAVA_HOME%"/>



java



-jar "D:\springboot-service\demo-0.0.1-SNAPSHOT.jar"



Automatic



%BASE%\log

rotate


(6)打开cmd窗口,注册服务cd springboot-servicespringbootDemo.exe install

0cb827252d3d063915c39f93df7f4707.webp

安装成功 (7)Win+R输入services.msc

602b94ef77854d9659e0c6607b419d80.webp

(8)可以看到我们刚刚的springboot项目已经被注册成一个window服务了

f1a79ac526380615127af1638a3fcca6.webp

在这里我们可以对我们的springbootDemo项目进行启动、停止、手动开启、自动开启等等管理。

4c251456582ce784d56dc368b2ddd491.webp

测试完成。补充:一些常用的命令winsw install:安装服务winsw uninstall:卸载服务winsw start:开启服务winsw stop:停止服务winsw restart:重新启动服务winsw status:检查服务的当前状态推荐阅读:
网友:看到 955 不加班的公司名单,我酸了...
如何设计一个超级牛逼的 Feed 流系统
5T技术资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,单片机,树莓派,等等。在公众号内回复「2048」,即可免费获取!!

微信扫描二维码,关注我的公众号

朕已阅 4852c99fcb59a79fb940d96ee03bcf84.webp

浏览 61
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报