Servicio de sistema de producción de paquete jar ejecutable Spring Boot

Servicio de sistema de producción de paquete jar ejecutable Spring Boot

En el complemento Maven de Spring Boot, también se proporciona la función de construir un programa ejecutable completo. ¿Qué significa?

En otras palabras, podemos java -jarejecutar el jar directamente para ejecutar el programa sin usarlo . Para que podamos crearlo fácilmente como un servicio del sistema que se ejecuta en segundo plano.

Los pasos principales son los siguientes:

1. Configure el archivo pom

Agregue el complemento Spring Boot en pom.xml y preste atención para establecer la configuración ejecutable

<build> 
  <plugins> 
    <plugin> 
      <groupId>org.springframework.boot</groupId>  
      <artifactId>spring-boot-maven-plugin</artifactId>  
      <configuration> 
        <executable>true</executable> 
      </configuration> 
    </plugin> 
  </plugins> 
</build>

2. Generar jar ejecutable

Después de completar la configuración anterior, use mvn installpara empaquetar y construir un paquete jar ejecutable

3. Crear una conexión suave

Crear un enlace suave al /etc/init.d/directorio

sudo ln -s /var/yourapp/yourapp.jar /etc/init.d/yourapp

4. Proyecto de inicio basado en servicios

Después de crear la conexión de software, podemos controlar las operaciones de inicio, detención y reinicio en la aplicación yourapp.jar con el siguiente comando

service yourapp start
service yourapp stop
service yourapp restart
service yourapp start

Explicación

Número mágico en formato zip

El jar / war generado es en realidad un archivo zip. ¿Por qué este archivo zip se puede ejecutar directamente debajo del shell?

Estudie el formato del próximo archivo zip.

El archivo zip está compuesto de entradas, y cada entrada tiene un byte de 4 al principio magic number:

Local file header signature = 0x04034b50 (read as a little-endian number)

即 PK\003\004

Referencia: https://en.wikipedia.org/wiki/Zip_(file_format)

El software de procesamiento zip lee el número mágico antes de comenzar a procesar. Entonces, en Linux / Unix, puede escribir un archivo bash directamente al comienzo de un archivo zip, para que se considere un script bash. El software de procesamiento zip aún puede procesarlo correctamente al leer este archivo.

Por ejemplo, generado por el arranque de primavera executable jar/war, el comienzo es:

#!/bin/bash
#
#    .   ____          _            __ _ _
#   /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
#  ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
#   \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
#    '  |____| .__|_| |_|_| |_\__, | / / / /
#   =========|_|==============|___/=/_/_/_/
#   :: Spring Boot Startup Script ::
#

Al final del contenido del script, puede ver el número mágico de la entrada zip:

exit 0
PK^C^D

spring boot 的 launch.script

De hecho spring boot maven plugin, el siguiente script está empaquetado en la parte frontal del tarro gordo.

https://github.com/spring-projects/spring-boot/blob/v1.5.18.RELEASE/spring-boot-tools/spring-boot-loader-tools/src/main/resources/org/springframework/boot/ cargador / herramientas / launch.script

Esto launch.scriptadmite muchas configuraciones variables.

También puede identificar automáticamente si se encuentra en diferentes modos de auto o servicio.

El llamado se auto moderefiere a la operación directa jar/war:

./demo.jar

Y service modees el caso de que el sistema operativo inicie el servicio:

service demo start/stop/restart/status

Por lo tanto, fat jar se puede ejecutar directamente en la línea de comandos ordinaria, ./xxx.jaro vincular a la /etc/init.d/siguiente, y convertirse en un servicio.

Resumen

  1. jar/warEn realidad está en formato zip.
  2. spring-boot-maven-pluginTrae el script de inicio al executable jar/warfrente.
  3. La última línea del exit 0script es que el script solo ejecuta su propio contenido, no el contenido en el jar / war.
  4. El archivo zip está compuesto por múltiples entradas, y hay una entrada al principio magic number, por lo que el software de procesamiento zip puede omitir el script anterior y encontrarlo con precisiónzip entry
420 artículos originales publicados · 143 pulgares arriba · 890,000 vistas

Supongo que te gusta

Origin blog.csdn.net/jeikerxiao/article/details/98873827
Recomendado
Clasificación