SpringBoot系列之JAR服务化运行

1,571 阅读2分钟

本文章提供在Linux下,window下以服务方式进行资源运行
参考: Spring Boot服务化运行

Linux

说明:
1.基于redhat系列(如:centos)
2.基于systemctl进行服务管理
3.更多参考
Linux服务编写

1.创建文件夹管理jar
格式:
  xxxApp:
    xxxApp.jar
    startup.sh(执行脚本)
    shutdown.sh(停止脚本)
    reload.sh(重启加载)
2.完善startup.sh/shutdown.sh/reload.sh
startup.sh 如:
#!/bin/sh
JAVA_HOME=/vosdata/jdk18
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME PATH
nohup java -jar /vosdata/test/demoApp.jar > /dev/null 2>&1 &

3.编写开机服务
注意:对于编写的开机自启动命令,是无法读取/etc/profile下的环境变量配置,需要使用绝对路径进行命令的查找
如: 编写demo.service
cd /usr/lib/systemd/system
vim demo.service
[Unit]
Description=服务描述
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=启动执行路径
#ExecReload=/ 重启加载
#ExecStop=/停止服务
PrivateTmp=true
[Install]
WantedBy=multi-user.target
4.设置服务类型并检查
systemctl daemon-reload #重新加载所有service服务
systemctl enable demo.service #开机启动该service
systemctl is-enabled demo.service #查看该service是否开机启用

Window

参考SpringBoot推荐winsw

使用步骤

  • 1.下载winsw.exe
url: http://repo.jenkins-ci.org/releases/com/sun/winsw/winsw/
版本说明:
v1:
老版本、维护状态[建议:不使用]
v2:
针对.NET Framework 4.0的新的可执行程序包。 仍支持.NET Framework 2.0。
扩展引擎,允许扩展包装器的行为。 及其几个扩展(共享目录映射器,Runaway Process Killer)
新版本托管:GitHub和NuGet
将日志记录子系统迁移到Apache log4net
Bug修复
新版本兼容旧版本相关配置
  • 2.准备可执行jar资源配置
参考Spring Boot官网文档提供配置
    <build>
        <finalName>XXXApp</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                        <configuration>
                            <finalName>XXXApp</finalName>
                <mainClass>xxxx.xxxx.XXXApp</mainClass>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    执行mvn clean package
  • 3.winsw 服务配置文件准备(xxx.xml) 参考:

安装

xml配置文件详解

目录结构说明:
--xxxWindowService
  xxxApp.jar(Spring Boot 可执行jar)
  XXXApp.exe(winsw重命名与需要服务化的jar名称一致)
  xxxApp.xml(winsw打包为服务的描述文件)
 
配置文件说明:
    <service>
      <id>安装成window后的服务名唯一</id>
      <name>服务名字的简写名称唯一</name>
      <description>服务描述</description>
      <env name="JENKINS_HOME[环境变量]" value="%BASE%"/> 
      <executable>java(执行命令)</executable>
      <arguments>-Xrs -Xmx256m -jar "%BASE%\jenkins.war" --httpPort=8080(参数)</arguments>
      <logmode>rotate(日志记录模式)</logmode>
    </service>
  • 4.winsw 相关命令使用
注意: 需要在管理员权限下进行执行操作(不然会报权限不够)
格式:
winsw.exe 命令
install: 安装服务
uninstall:卸载服务
start:启动服务
stop:停止服务
restart:重启服务
status:查看服务状态
  • 5.多个服务注册配置
 参考:3.winsw 服务配置文件准备(xxx.xml)
 创建多个服务的文件目录,如
 xxxxServices
   AService:
    A.jar
    A.exe
    A.xml
   BService:
    B.jar
    B.exe
    B.xml
   CService:
    C.jar
    C.exe
    C.xml