这里是将java项目注册为Windows服务实现开机自启动。
查看.NET framework版本
因为使用winsw工具运行时需要使用.NET framework
,基本上现在的win10系统带自带有.NET framework4.0,为了选择合适的版本,我们可以查看本机.NET Framework版本,根据版本选择适合的winsw版本。
- 打开本地资源管理器,地址栏输入
C:\Windows\Microsoft.NET\Framework
,进入目录 - 查看当前目录下.NET Framework版本
可以看出最高版本为4
winsw
winsw工具,全名Windows Service Wrapper,是一款使用C#开发的小工具。
它的使用原理就是winsw.exe本身注册为windows服务,可以设置为自启动。当它启动时,配合exe同名的xml文件中的配置,执行设置的命令,达到自启动的效果。
winsw开源地址:https://github.com/winsw/winsw
我使用的是v2.11.0版本,下载地址:https://github.com/winsw/winsw/releases/tag/v2.11.0
根据.Net Framework版本下载即可,如:WinSW.NET4.exe
sample-minimal.xml 是一个最小配置的列子。
sample-allOptions.xml 是一个全部可配置参数的例子。
修改及配置
- 将winsw.exe名称改为具有实际意义的名称,因为注册后服务启动的exe就是这个exe,服务列表中显示的名称也是这个名称,一般与sample-minimal.xml一样,一起修改为与Springboot项目打包的jar同名,如appstore.exe、appstore.xml、appstore.jar
- xml设置
<service>
<!-- 服务名称 -->
<id>test</id>
<name> appstore </name>
<description>应用市场</description>
<!-- java环境变量 -->
<executable>java</executable>
<arguments>-Dspring.profiles.active=prod -server -Xms512m -Xmx1024m -XX:MaxNewSize=1024m -XX:MaxPermSize=1024m -XX:CompressedClassSpaceSize=512m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -jar "%BASE%\appstore.jar"</arguments>
<!-- 开机启动 -->
<startmode>Automatic</startmode>
<!-- 日志配置 -->
<logpath>%BASE%\log</logpath>
<logmode>rotate</logmode>
</service>
相关参数说明如下:
- id:安装windows服务后的服务ID,必须是唯一的。
- name:服务名称,也必须是唯一的。一般和id一致即可。
- description:服务说明,可以使用中文,可做备注使用。
- executable:执行的命令,比如启动springboot应用的命令java。
- arguments:命令执行参数,比如 包路径,类路径等。
配置完之后,把appstore.exe、appstore.xml、appstore.jar放到同一目录下
注册服务
在Java项目文件夹地址栏里输入cmd,执行命令即可安装注册。
appstore.exe install
工具其他命令
命令行 | 含义 |
---|---|
appstore.exe install | 安装服务 |
appstore.exe start | 启动服务 |
appstore.exe stop | 停止服务 |
appstore.exe restart | 重启服务 |
appstore.exe uninstall | 删除服务 |
appstore.exe status | 查看状态 |