logging deployment spring-boot glassfish-4.1

logging - No se puede implementar Spring Boot App en Glassfish 4.1



deployment spring-boot (2)

Error en glassfish. Fix en la versión 4.1.1

Creé una aplicación Spring Boot (servicio web). Todo está bien y la aplicación funciona bien a través del tomcat integrado en Spring Boot. Cuando trato de empaquetar en una guerra y desplegar a Glassfish 4.1 es un extraño error.

Mi configuración de maven:

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <!-- Your own application should inherit from spring-boot-starter-parent --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.0.RELEASE</version> </parent> <artifactId>MyWS</artifactId> <groupId>fr.companie</groupId> <name>myws</name> <description>Spring Boot Data JPA Project</description> <version>1.3</version> <organization> <name>some org</name> </organization> <packaging>${packaging.type}</packaging> <properties> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- for glassfish bug A mettre dans profil prod --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-velocity</artifactId> </dependency> <!-- integrate Spring with JAX-WS (cxf) --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.1.4</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>3.1.4</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.10</version> </dependency> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.4</version> </dependency> </dependencies> <profiles> <profile> <id>production</id> <properties> <packaging.type>war</packaging.type> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> </dependencies> <build> <finalName>${project.name}</finalName> <plugins> <plugin> <artifactId>maven-war-plugin</artifactId> <configuration> <packagingExcludes>**/*.sql</packagingExcludes> </configuration> </plugin> </plugins> </build> </profile> <profile> <id>developpement</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <packaging.type>jar</packaging.type> </properties> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </profile> </profiles> </project>

Y el error en la implementación:

remote failure: Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration$DispatcherServletConfiguration'': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.boot.autoconfigure.web.ServerProperties org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration$DispatcherServletConfiguration.server; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''serverProperties'' defined in class path resource [org/springframework/boot/autoconfigure/web/ServerPropertiesAutoConfiguration.class]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.jboss.logging.LoggerProviders. Please see server.log for more details. Command deploy failed.

He intentado agregar dependencias de registro de jboss y log4j sl4j y así una dependencia sin éxito .... :(

Ayuda :) !


En mi caso, este mensaje de error ocultaba una incompatibilidad entre las versiones de hibernate 5 y jboss-logging.

El problema era que la versión jboss-logging provista por Spring Boot (3.3.0.Final) estaba siendo reemplazada por una versión anterior ya incluida en las bibliotecas glassfish (3.1.3-GA), bajo el directorio "modules".

La solución fue agregar un archivo "glassfish-web.xml" en la carpeta "WEB-INF" de la aplicación web, con el siguiente contenido (como se sugiere en https://.com/a/38439108 ).

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd"> <glassfish-web-app> <class-loader delegate="false"/> </glassfish-web-app>

Esto asegura la carga de las bibliotecas del proyecto en lugar de las del servidor. Después de ese cambio, el proyecto de arranque de primavera se ejecuta en glassfish sin problemas.