Spring Boot项目之自制成window服务上篇

375 阅读3分钟

大家好!我是锦视,从事IT技术开发近12年,参与及独立负责过大大小小的项目不少于60个,接触过个各行各业,具有丰富的项目开发及管理经验,来掘金平台目的是记录自己职业生涯中的点点滴滴~~~

前言

相信大家都知道window系统自带的自启动服务,win+r输入services.msc即可打开,打开后会看到系统内置的一些服务,而且有些是已经启动的,如下截图:

企业微信截图_16883054835569.png 那么今天我就以一个Spring Boot项目来和大家一起讨论交流一下,我是如何将一个可执行的spring boot项目制作为windows服务。

本篇我主要从以下几个方面来讲解:

  • Spring Boot示例
  • winsw
  • 拷贝&配置
  • 批处理文件
  • 安装并启动服务

当然,程序自制为window服务也还有其他方案,至于哪种方案更好,我只能说看应用场景吧,这里就不介绍了。

Spring Boot示例

如果是从事Java语言开发的后端工程师,我相信大家都会用Spring Boot开发一个简单的可执行程序,这里我就不多说了,我这里就假设spring boot项目打成可执行jar包的名字为demo.jar,其他语言也一样,注意,这个程序一定要是可以被执行的。

注: 根据开发语言的不同,需要提前准备好运行环境,例如:java需要jre

WinSW

这是一个window服务安装程序,下载地址: github.com/winsw/winsw 点击以上链接后打开页面,示例截图如下:

image.png

根据系统下载对应的版本

拷贝&配置

  • 拷贝winsw.exe,解压并打开已经下载好的winsw,复制一份并讲winsw.exe重命名为dserver.exe,并拷贝到与demo.jar同级目录里
  • 创建dserver.xml文件,用于window服务启动时读取
    <service>
      <id>dserver_8018</id>
      <name>Demo Service</name>
      <description>The demo service runs on port 8018(powered by WinSW)</description>
      <logpath>logs</logpath>
      <log mode="roll-by-size">
       <sizeThreshold>10240</sizeThreshold>
       <keepFiles>8</keepFiles>
      </log>
      <executable>jre/bin/demo.exe</executable>
      <arguments> -jar demo.jar --server.port=8018  -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms512m -Xmx512m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -Dspring.config.location=config/application.properties</arguments>
    </service>

注:jre/bin/demo.exe为另外一份javaw.exe的拷贝

批处理文件

在demo.jar目录分别创建以下截图中的文件,如下截图:

企业微信截图_16883067065809.png

  • setup.bat文件,批处理命令如下:
@echo off
title installing demo service, please wait...................
dserver install dserver.xml
echo .
echo ------------ congratulations,demo service installed successfully.--------------
echo .
timeout /t 3
exit
  • start.bat文件,批处理命令如下:
@echo off
title starting demo service, please wait...................
dserver start dserver.xml
echo .
echo ------------ started.--------------
echo .
timeout /t 3
exit

其他批处理文件,依次类推

注:以上所有文件必须与demo.jar目录同级,例如:文件夹名称为api,那么所有文件必须放在api目录里,包括jre等

安装&启动服务

  • 点击setup.bat,弹窗后点“是”,若成功,则在服务中会出现“Demo Service”
  • 点击start.bat,弹窗后点“是”,若成成,则服务的状态为“正在执行”

若安装服务失败,请检查配置文件(dserver.xml)或winsw程序与系统的兼容性,建议先看错误日志再排查。

总结

以上为spring boot程序示例,其他语言开发的程序为同样的原理,本章节分为上、中、下篇,中篇,将服务打成跟我们从网上下载下来的安装包一样,直接点击安装到系统里,例如:QQ安装包等,下篇:防止电脑重启后服务没启动,会编写一个检测服务启动状态的脚本。敬请期待~~~