欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-21 18:40:08
...

点击上方蓝色字体,选择“标星公众号”

优质文章,第一时间送达

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

关注公众号后台回复pay或mall获取实战项目资料视频
点击此链接:多套SpringCloud/SpringBoot实战项目,资料文档教程齐全

作者:双主双机热备

来源: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项目奇葩需求:springboot项目注册为windows系统服务并设置开机自启(2)打开cmd,运行项目。奇葩需求:springboot项目注册为windows系统服务并设置开机自启端口:9527

/:去项目名奇葩需求:springboot项目注册为windows系统服务并设置开机自启(3)实际测试项目(demo-0.0.1-SNAPSHOT.jar)中的一个接口
奇葩需求:springboot项目注册为windows系统服务并设置开机自启(4)测试访问奇葩需求:springboot项目注册为windows系统服务并设置开机自启

2、改进版

以上方式运行项目还需要手动进入cmd输入命令,相对来说比较麻烦。

下面我们可以通过一个bat脚本来实现这个功能。

(1)脚本内容,比较简单。奇葩需求:springboot项目注册为windows系统服务并设置开机自启(2)执行cmd脚本奇葩需求:springboot项目注册为windows系统服务并设置开机自启(3)测试访问奇葩需求:springboot项目注册为windows系统服务并设置开机自启

3、 改进版plus

关于以上的两种方式不能满足开机自启动需求。

假设服务器宕机,重启启动服务还需要人工操作。

所以下面我们利用windows启动菜单添加快捷方式来完成开机自启的需求。(1)win+R打开运行窗口,输入shell:startup奇葩需求:springboot项目注册为windows系统服务并设置开机自启(2)将步骤2的脚本start.cmd新建一个快捷方式,然后将快捷方式拷贝到启动项文件中。奇葩需求:springboot项目注册为windows系统服务并设置开机自启(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。

如下图:奇葩需求:springboot项目注册为windows系统服务并设置开机自启这里以WinSW.NET2.exe为例。奇葩需求:springboot项目注册为windows系统服务并设置开机自启下载到桌面WinSW.NET2.exe奇葩需求:springboot项目注册为windows系统服务并设置开机自启(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工具放置到同一个目录中。奇葩需求:springboot项目注册为windows系统服务并设置开机自启(5)编写springbootDemo.xml配置文件,如下所示:

<service>

<id>springbootDemo</id>

<name>springbootDemo</name>

<description>This is springbootDemo service.</description>

<env name="JAVA_HOME" value="%JAVA_HOME%"/>

<executable>java</executable>

<arguments>-jar "D:\springboot-service\demo-0.0.1-SNAPSHOT.jar"</arguments>

<startmode>Automatic</startmode>

<logpath>%BASE%\log</logpath>

<logmode>rotate</logmode>

</service>

奇葩需求:springboot项目注册为windows系统服务并设置开机自启下面是配置文件用到的标签的简单解释

<!-- 这里的根元素必须是service节点 -->

<service>

<!-- 指定在Windows系统内部使用的识别服务的ID,唯一 -->

<id>springbootDemo</id>

<!-- 服务的简短名称,唯一 -->

<name>springbootDemo</name>

<!-- 描述 -->

<description>This is springbootDemo service.</description>

<!-- java环境变量 -->

<env name="JAVA_HOME" value="%JAVA_HOME%"/>

<!-- 指定要启动的可执行文件。 -->

<executable>java</executable>

<!-- 指定要传递给可执行文件的参数,

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

<arguments>-jar "D:\springboot-service\demo-0.0.1-SNAPSHOT.jar"</arguments>

<!-- 开机启动 -->

<startmode>Automatic</startmode>

<!-- 日志配置 -->

<logpath>%BASE%\log</logpath>

<logmode>rotate</logmode>

</service>

(6)打开cmd窗口,注册服务

cd springboot-service

springbootDemo.exe install奇葩需求:springboot项目注册为windows系统服务并设置开机自启安装成功 (7)Win+R输入services.msc奇葩需求:springboot项目注册为windows系统服务并设置开机自启(8)可以看到我们刚刚的springboot项目已经被注册成一个window服务了奇葩需求:springboot项目注册为windows系统服务并设置开机自启在这里我们可以对我们的springbootDemo项目进行启动、停止、手动开启、自动开启等等管理。奇葩需求:springboot项目注册为windows系统服务并设置开机自启测试完成。补充:

一些常用的命令

winsw install:安装服务

winsw uninstall:卸载服务

winsw start:开启服务

winsw stop:停止服务

winsw restart:重新启动服务

winsw status:检查服务的当前状态


有热门推荐????抛弃 Java 改用 Kotlin 的六个月后,我后悔了!这篇带你熟悉 SpringBoot+RabbitMQ 方式收发消息
盘点提高国内访问 GitHub 的速度的 9 种方案
15000 字的 SQL 语句大全
贼厉害,手撸的 SpringBoot缓存系统,性能杠杠的!
Mybatis接口Mapper内的方法为啥不能重载吗?

干货分享:扫码关注下面的公众号获取面试资料+项目实战资料(电商/聚合支付)


点击阅读原文,获免费JVM+MySQL+设计模式+分布式+微服务完整面试资料