java-ee deployment wildfly apache-tika

java ee - Problema de implementación de Tika-Parsers en Wildfly



java-ee deployment (1)

Además del hecho de que Tika vierte una pila gigantesca de dependencias cuestionables con una montaña adicional de dependencias transitorias no deseadas en su ruta de clase de tiempo de ejecución, se encontrará con este problema:

http://weld.cdi-spec.org/documentation/#4

https://issues.jboss.org/browse/CDI-377

Básicamente es un problema de incompatibilidad en CDI 1.1 que se ha resuelto en CDI 1.2; actualizar manualmente Weld a la versión 2.3.x en Wildfly puede eliminar el problema por completo.

A menos que realice una actualización manual, puede hacer que el problema desaparezca al declarar un archivo META-INF / jboss-all.xml con el siguiente contenido. Suponiendo que tenga una guerra, la ruta precisa es webapp / META-INF / jboss-all.xml.

<jboss xmlns="urn:jboss:1.0"> <weld xmlns="urn:jboss:weld:1.0" require-bean-descriptor="true"/> </jboss>

Y asegúrese de definir un archivo WEB-INF / beans.xml (de nuevo: asumiendo una guerra) en sus propios módulos que necesitan soporte CDI. Esto obliga a Weld a solo intentar configurar los módulos que tienen un archivo beans.xml como parte de ellos, lo que CXF no hará.

Además de todo eso, realmente investigaría el árbol de dependencias y vería qué es atraído por Tika; por ejemplo, encontrará que la API javax.inject se coloca en el ámbito de compilación y, por lo tanto, se implementa con su aplicación, algo que realmente no desea.

Como parte de una aplicación web, necesito analizar el contenido textual de diferentes archivos entrantes. Esto debería ser bastante simple usando tika-parsers , pero tan pronto como intento desplegar mi aplicación web en Wildfly (probado V.8.2.1 y V.10.0.0.RC4) me encuentro con problemas.

Esta es mi dependencia de maven en una aplicación web muy básica:

<groupId>org.apache.tika</groupId> <artifactId>tika-parsers</artifactId> <version>1.11</version>

Este es el error que recibo durante la implementación (implementación manual o uso de arquillian para probar):

Caused by: java.lang.Exception: {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit./"backend-test.war/".WeldStartService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit./"backend-test.war/".WeldStartService: Failed to start service Caused by: org.jboss.weld.exceptions.DefinitionException: WELD-000071: Managed bean with a parameterized bean class must be @Dependent: class org.apache.cxf.jaxrs.provider.SourceProvider"}}

Supongo que hay un conflicto de dependencia, pero no tengo idea de cómo evitarlo. beans.xml? jboss-deployment-structure.xml? ¿Deshabilitar cualquier módulo de mosca salvaje?

Saludos, Philipp