Error de inyección de dependencia Javax en la implementación de Wyldfly 10.
Tengo un problema cuando intento desplegar mi aplicación en Wildfly 10.
El problema se refiere a la inyección de dependencias para una interfaz.
Mi aplicación es un proyecto multi-módulo de Maven. La interfaz y la inyección de dependencias están en el mismo módulo. Ya he tenido el mismo problema con otra interfaz ubicada en otro módulo (la inyección se realiza en la misma clase que en el problema actual).
Mi módulo está desplegado en un paquete war (esto es lo que intento desplegar). Mi proyecto está desplegado en un paquete ear único.
Error:
“{“WFLYCTL0080: Servicios fallidos” => {“jboss.deployment.unit.\ “myApp-0.0.1-SNAPSHOT.war\”.component.SpecificDataListener.WeldInstantiator” => “org.jboss.msc.service.StartException en el servicio jboss.deployment.unit.\ “myApp-0.0.1-SNAPSHOT.war\”.component.SpecificDataListener.WeldInstantiator: No se pudo iniciar el servicio
Causado por: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Dependencias insatisfechas para el tipo IMsgPoolManager con calificadores @Default
en el punto de inyección [BackedAnnotatedField] @Inject private fr.gateway.controller.impl.SpecificDataListener.messagePoolManager
en fr.gateway.controller.impl.SpecificDataListener.messagePoolManager (SpecificDataListener.java:0)
“”}}”
Interfaz:
import eu.datamodel.entity.Entity;
public interface IMsgPoolManager {
void sendCiseMessage(Entity myObject);
}
Inyección:
@MessageDriven (mappedName = "topic/specificdatato", activationConfig = {
@ActivationConfigProperty (propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty (propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
@ActivationConfigProperty (propertyName = "destination", propertyValue = "topic/specificdatato"),
@ActivationConfigProperty (propertyName = "clientId", propertyValue = "specificdatato")})
public class SpecificDataListener implements MessageListener {
private static Logger LOGGER = LoggerFactory.getLogger (SpecificDataListener.class);
@Inject
public IMsgPoolManager messagePoolManager;
/ ** Un poco de código ** /
}
beans.xml:
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:="" schemalocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd" bean-discovery-mode="all">
</beans>
pom.xml
<?xml version = "1.0"?>
<project xsi:="" schemalocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:="" xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelversion> 4.0.0 </modelversion>
<parent>
<groupid> fr </groupid>
<artifactid> myParentApp </artifactid>
<version> 0.0.1-SNAPSHOT </version>
</parent>
<artifactid> myApp </artifactid>
<name> myApp </name>
<packaging> war </packaging>
<properties>
<project.build.sourceencoding> UTF-8 </project.build.sourceencoding>
</properties>
<build>
<plugins>
<plugin>
<groupid> org.apache.maven.plugins </groupid>
<artifactid> maven-compiler-plugin </artifactid>
<version> 3.1 </version>
<configuration>
<source> 1.8
<target> 1.8 </target>
</configuration>
</plugin>
<plugin>
<artifactid> maven-war-plugin </artifactid>
<version> 3.1.0 </version>
<configuration>
<failonmissingwebxml> false </failonmissingwebxml>
<archive>
<manifestentries>
<dependencies> org.mongodb </dependencies>
</manifestentries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!-- Dependencias JAVAX -->
<dependency>
<groupid> javax.ws.rs </groupid>
<artifactid> javax.ws.rs-api </artifactid>
<version> 2.0.1 </version>
<scope> provided </scope>
</dependency>
<dependency>
<groupid> javax.inject </groupid>
<artifactid> javax.inject </artifactid>
<version> 1 </version>
<scope> provided </scope>
</dependency>
<dependency>
<groupid> javax.ejb </groupid>
<artifactid> javax.ejb-api </artifactid>
<version> 3.2 </version>
<scope> provided </scope>
</dependency>
<dependency>
<groupid> javax.annotation </groupid>
<artifactid> javax.annotation-api </artifactid>
<version> 1.3.2 </version>
<scope> provided </scope>
</dependency>
<dependency>
<groupid> javax.enterprise </groupid>
<artifactid> cdi-api </artifactid>
<version> 1.2 </version>
<scope> provided </scope>
</dependency>
<dependency>
<groupid> javax.enterprise.concurrent </groupid>
<artifactid> javax.enterprise.concurrent-api </artifactid>
<version> 1.0 </version>
<scope> provided </scope>
</dependency>
<dependency>
<groupid> junit </groupid>
<artifactid> junit </artifactid>
<version> 3.8.1 </version>
<scope> test </scope>
</dependency>
</dependencies>
He intentado muchas soluciones encontradas en internet, pero el error sigue ocurriendo…
davy.ai
Basándonos en el mensaje de error, parece que el contenedor CDI no puede encontrar un bean adecuado para la interfaz IMsgPoolManager. Aquí hay algunas cosas que debes revisar:
Si ninguna de estas soluciones funciona, es posible que necesites proporcionar más información sobre tu configuración específica, como la estructura de directorios de tu proyecto y el contenido de cualquier archivo de configuración. Además, es posible que desees considerar publicar tu pregunta en un foro de Java o Wildfly para obtener ayuda más específica.