Despliegue de Aplicaciones Spring Boot en Servidores Tomcat Externos

Las aplicaciones Spring Boot están diseñadas para ejecutarse de forma autónoma mediante archivos JAR que incluyen un contenedor de servlets embebido. Sin embargo, en entornos corporativos que exigen el uso de un servidor Apache Tomcat externo, es necesario modificar la configuración del proyecto para generar un archivo WAR.

  1. Configuración del archivo POM

El primer paso consiste en indicar a Maven que el tipo de emapquetado será war. Además, es crucial marcar la dependencia del contenedor Tomcat con el alcance provided para evitar conflictos de clases en tiempo de ejecución.

<packaging>war</packaging>

<dependencies>
    <!-- Dependencia web con exclusión del Tomcat embebido -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
    <!-- Inclusión de Tomcat con alcance proporcionado por el servidor externo -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>
  1. Adaptación de la Clase Principal

Para que el servidor Tomcat externo pueda inicializar el contexto de Spring, la clase de entrada debe extender SpringBootServletInitializer y sobreescribir el método de configuración del constructor.

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class BackendCoreApp extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder appBuilder) {
        return appBuilder.sources(BackendCoreApp.class);
    }

    public static void main(String[] cliArgs) {
        SpringApplication.run(BackendCoreApp.class, cliArgs);
    }
}
  1. Compilación del Artefacto

Con las configuraciones aplicadas, ejecute el ciclo de vida de Maven para limpiar, compilar y empaquetar la aplicación:

mvn clean package

Este comando generará un archivo .war dentro del directorio target/.

  1. Instalación y Ejecución en Tomcat

Transfiera el archivo WAR generado al directorio webapps/ de la instalación de Tomcat. Una vez copiado, inicie el servidor ejecutando el script correspondiente ubicado en la carpeta bin/:

./startup.sh

Es aconsejable revisar los registros del servidor para confirmar que el despliegue se ha completado sin excepcionse:

tail -f logs/catalina.out
  1. Acceso a la Aplicación

Una vez que Tomcat haya descomprimido y desplegado el archivo, la aplicación estará disponible a través del puerto configurado. El contexto raíz de la URL estará determinado por el nombre del archivo WAR:

http://[direccion-ip-servidor]:8080/[nombre-del-archivo-war]

Etiquetas: spring-boot tomcat maven java despliegue

Publicado el 7-5 22:41