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>
No hay comentarios:
Publicar un comentario