analytics

Mostrando entradas con la etiqueta Spring Boot cargar web. Mostrar todas las entradas
Mostrando entradas con la etiqueta Spring Boot cargar web. Mostrar todas las entradas

miércoles, 23 de agosto de 2017

Spring Boot load war


Vamos a ver cómo cargar un .war ajeno a nuestro Tomcat Embebido utilizando Spring Boot.

Aquí ya veíamos como cargar Tomcat embebido con Spring Boot
Aquí vimos cómo utilizar el log de Spring Boot
Y aquí vimos cómo hacer que la conexión de Tomcat sea segura

A nuestro fichero de properties de Spring Boot le añadiremos las líneas del path y el context donde cargará el .war

war.context=/MyApp
war.path=MyApp.war

Y en nuestro código, tendremos que añadir lo siguiente

@Bean
    public EmbeddedServletContainerFactory servletContainerFactory() {
        return new TomcatEmbeddedServletContainerFactory() {

            @Override
            protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(
                    Tomcat tomcat) {
                // Ensure that the webapps directory exists
                new File(tomcat.getServer().getCatalinaBase(), "webapps").mkdirs();

                try {

                    String warContext = properties.getProperty("war.context");
                    String warPath = properties.getProperty("war.path");
        
                    System.out.println("Will load " + warPath + " on " + warContext);

                    Context context = tomcat.addWebapp(warContext, new File(warPath).getAbsolutePath());
                    // Allow the webapp to load classes from your fat jar
                    context.setParentClassLoader(getClass().getClassLoader());
                } catch (ServletException ex) {
                    throw new IllegalStateException("Failed to add webapp", ex);
                }
                return super.getTomcatEmbeddedServletContainer(tomcat);
            }

        };
    }

Muy fácil no? y no hay que andar peleándose con la configuración de Tomcat. Spring Boot nos hace la gestión casi automáticamente...
Por cierto, asegúrate de tener la siguiente dependencia en tu POM de Maven

<dependency>
  <groupId>org.apache.tomcat.embed</groupId>
  <artifactId>tomcat-embed-jasper</artifactId>
  <version>8.5.5</version>
</dependency>