将Spring Boot Application设为服务

通过Spring Boot构建的项目,可以在pom中设置,使用maven生成jar包,而非传统的war包。相较war包,jar包简化了实施的难度,但在windows下,需要想办法将jar设置成开机启动,否则重启就是个悲剧了。将ja包装为一个windows 服务是一个很好的办法。下面具体说说怎么做。

如何构建可运行Jar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<packaging>jar</packaging> <!--这里是jar-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
</parent>
<dependencies>
....
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable> <!--这里是true-->
</configuration>
</plugin>
</plugins>
</build>

这样的话通过maven project中的install命令就会输出一个可执行的jar包。

注册服务

在windows下有很多种方法去把一个可执行jar设置成服务,但这里我推荐使用winswprocrun。不差钱的话,也可以购买java service wrapper,alwaysup这些商业软件。下面以winsw为例说明。

  • 首先,你需要下载winsw的可执行程序。下载

  • 其次,新建一个xml文件,xml的名字跟你想注册的服务名字相同。比如leferApi.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <service>
    <id>leferApi</id> <!--windows服务的唯一标识,只能是字母和数字.不能和其他服务重名-->
    <name>leferApi</name> <!--服务名,不能和其他服务重名-->
    <description>服务的描述</description>
    <env name="MYAPP_HOME" value="C:\"/> <!--设置路径-->
    <executable>java</executable>
    <arguments>-jar "C:\leferApi.jar"</arguments> <!--设置执行参数-->
    <logmode>rotate</logmode> <!--循环日志-->
    </service>
  • 然后,将下载的winsw.exe更名成与xml相同的名字leferApi.exe。然后在命令行中执行下面的命令。

    1
    leferApi intall //注册服务

    当然,对应的还有unintallstartstop等一系列命令。执行完install,可以发现windows服务列表中就已经出现了对应的服务。

END