es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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…

Tags:  , , , ,

Answer

  1. Avatar for 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:

    1. Asegúrate de que la interfaz y la clase que la implementa estén correctamente anotadas con las anotaciones @javax.inject.Named o @javax.enterprise.context.ApplicationScoped (o cualquier otra anotación calificadora que estés utilizando).
    2. Verifica que el módulo que contiene la interfaz y el módulo que contiene la implementación se encuentren ambos enumerados como dependencias en el archivo pom.xml del módulo donde se está realizando la inyección.
    3. Asegúrate de que el archivo beans.xml esté presente tanto en el módulo que contiene la interfaz como en el módulo que contiene la implementación.
    4. Revise nuevamente que no haya errores de ortografía o de sintaxis en ninguna de las anotaciones o archivos de configuración.
    5. Intenta limpiar y reconstruir el proyecto antes de volver a implementarlo.

    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.

Comments are closed.