Spring Boot Crear archivo war

Como vimos en el tutorial Introducción a Spring Boot la aplicaciones web creadas con este framework son empaquetadas en una archivo jar el cual incluye un servidor integrado que nos permite ejecutar una aplicación web con el comando java -jar spring-boot-app.jar, si en determinado caso deseamos instalar nuestra aplicación en un servidor externo deberemos empaquetar nuestra aplicación en un archivo war, en este curso veremos los cambios que debemos hacer para empaquetar una aplicación web Spring Boot en un archivo war.

Para este tutorial usaremos la aplicación creada en el curso anterior introducción a la creación de aplicaciones web con Spring Boot, modificaremos la misma, para generar el archivo war correspondiente.

Lo primero que debemos cambiar es el archivo pom.xml, mas específicamente la etiqueta packaging, debe quedar del siguiente modo:

<packaging>war</packaging>

Lo segundo que debemos hacer es configurar la dependencia del servidor integrado como provided, como estamos usando el servidor por defecto, Apache Tomcat, la dependencia debe quedar así:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

Para finalizar debemos indicar como se inicia nuestra aplicación web, normalmente utilizamos el archivo web.xml para esta tarea, Spring Boot nos facilita el trabajo con la clase base SpringBootServletInitializer que extenderemos y sobre-escribiremos el método configure(SpringApplicationBuilder app) aquí indicaremos cual es la clase que configurar el Servlet de nuestra aplicación.

public class SpringBootWebInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(IntroduccionApplication.class);
    }
}

El método main(String[] args) de la clase IntroduccionApplication ya no será usado como punto de inicio si la aplicación web se empaqueta en un archivo war.

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class IntroduccionApplication {

    public static void main(String[] args) {
        SpringApplication.run(IntroduccionApplication.class, args);
    }
}

Sí quitamos el método main(String[] args) debemos también remover el maven plugin spring-boot-maven-plugin del archivo pom.xml para evitar errores.

En Netbeans 8.x podemos ejecutar la aplicación haciendo clic derecho sobre el proyecto y seleccionado la opción Run.

Spring Boot en servidor Tomcat

Seleccionamos el servidor, esperamos a que termine el despliegue.

Ejecutar WAR Spring Boot

Si todo está correcto, veremos nuestra aplicación en el navegador.

El archivo /META-INF/context.xml puede modificar la ruta con la que accedemos a la aplicación, para utilizar las mismas URL que usamos en una aplicación jar debemos  modificar este archivo, especialmente el atributo path.

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/"/>

Por ejemplo si path="springbootapp" deberemos usar la siguiente URL

Spring boot archivo war

El archivo war se almacena en la carpeta target del proyecto, en nuestro caso este archivo se llamará introduccion/target/introduccion-0.0.1-SNAPSHOT.war.

Comentarios

Entradas populares de este blog

Conectar SQL Server con Java

Conociendo la clase cv::Mat de OpenCV

Entrenar OpenCV en Detección de Objetos

Procesamiento de imágenes en OpenCV

Acceso a la webcam con OpenCV