Ошибка внедрения зависимостей Javax в развертывании Wyldfly 10

#java #maven #dependency-injection #interface #cdi

#Ява #знаток #инъекция зависимости #интерфейс #cdi

Вопрос:

У меня проблема, когда я пытаюсь развернуть свое приложение в Wildfly 10.

Проблема связана с внедрением зависимостей для интерфейса.

Мое приложение представляет собой многомодульный проект maven. Интерфейс и внедрение зависимостей находятся в одном модуле. У меня уже есть такая же проблема с другим интерфейсом, размещенным в другом модуле (инъекция выполнена в том же классе, что и для текущей проблемы).

Мой модуль развернут в пакете war (это то, что я пытаюсь развернуть). Мой проект развернут в уникальном пакете ear.

Ошибка :

 "{"WFLYCTL0080: Failed services" =gt; {"jboss.deployment.unit.\"myApp-0.0.1-SNAPSHOT.war\".component.SpecificDataListener.WeldInstantiator" =gt; "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"myApp-0.0.1-SNAPSHOT.war\".component.SpecificDataListener.WeldInstantiator: Failed to start service  Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type IMsgPoolManager with qualifiers @Default  at injection point [BackedAnnotatedField] @Inject private fr.gateway.controller.impl.SpecificDataListener.messagePoolManager  at fr.gateway.controller.impl.SpecificDataListener.messagePoolManager(SpecificDataListener.java:0) "}}"  

Интерфейс :

 import eu.datamodel.entity.Entity;  public interface IMsgPoolManager {   void sendCiseMessage(Entity myObject);   }  

Инъекция :

 @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;    /** Some code **/  }   

beans.xml :

 lt;?xml version="1.0" encoding="UTF-8"?gt; lt;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"gt; lt;/beansgt;  

pom.xml

 lt;?xml version="1.0"?gt; lt;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"gt;  lt;modelVersiongt;4.0.0lt;/modelVersiongt;    lt;parentgt;  lt;groupIdgt;frlt;/groupIdgt;  lt;artifactIdgt;myParentApplt;/artifactIdgt;  lt;versiongt;0.0.1-SNAPSHOTlt;/versiongt;  lt;/parentgt;    lt;artifactIdgt;myApplt;/artifactIdgt;  lt;namegt;myApplt;/namegt;  lt;packaginggt;warlt;/packaginggt;    lt;propertiesgt;  lt;project.build.sourceEncodinggt;UTF-8lt;/project.build.sourceEncodinggt;  lt;/propertiesgt;    lt;buildgt;  lt;pluginsgt;  lt;plugingt;  lt;groupIdgt;org.apache.maven.pluginslt;/groupIdgt;  lt;artifactIdgt;maven-compiler-pluginlt;/artifactIdgt;  lt;versiongt;3.1lt;/versiongt;  lt;configurationgt;  lt;sourcegt;1.8lt;/sourcegt;  lt;targetgt;1.8lt;/targetgt;  lt;/configurationgt;  lt;/plugingt;  lt;plugingt;  lt;artifactIdgt;maven-war-pluginlt;/artifactIdgt;  lt;versiongt;3.1.0lt;/versiongt;  lt;configurationgt;  lt;failOnMissingWebXmlgt;falselt;/failOnMissingWebXmlgt;  lt;archivegt;  lt;manifestEntriesgt;  lt;Dependenciesgt;org.mongodblt;/Dependenciesgt;  lt;/manifestEntriesgt;  lt;/archivegt;  lt;/configurationgt;  lt;/plugingt;  lt;/pluginsgt;  lt;/buildgt;    lt;dependenciesgt;    lt;!-- JAVAX dependencies --gt;   lt;dependencygt;  lt;groupIdgt;javax.ws.rslt;/groupIdgt;  lt;artifactIdgt;javax.ws.rs-apilt;/artifactIdgt;  lt;versiongt;2.0.1lt;/versiongt;  lt;scopegt;providedlt;/scopegt;  lt;/dependencygt;    lt;dependencygt;  lt;groupIdgt;javax.injectlt;/groupIdgt;  lt;artifactIdgt;javax.injectlt;/artifactIdgt;  lt;versiongt;1lt;versiongt;  lt;scopegt;providedlt;/scopegt;  lt;/dependencygt;    lt;dependencygt;  lt;groupIdgt;javax.ejblt;/groupIdgt;  lt;artifactIdgt;javax.ejb-apilt;/artifactIdgt;  lt;versiongt;3.2lt;versiongt;  lt;scopegt;providedlt;/scopegt;  lt;/dependencygt;    lt;dependencygt;  lt;groupIdgt;javax.annotationlt;/groupIdgt;  lt;artifactIdgt;javax.annotation-apilt;/artifactIdgt;  lt;versiongt;1.3.2lt;versiongt;  lt;scopegt;providedlt;/scopegt;  lt;/dependencygt;    lt;dependencygt;  lt;groupIdgt;javax.enterpriselt;/groupIdgt;  lt;artifactIdgt;cdi-apilt;/artifactIdgt;  lt;versiongt;1.2lt;/versiongt;  lt;scopegt;providedlt;/scopegt;  lt;/dependencygt;    lt;dependencygt;  lt;groupIdgt;javax.enterprise.concurrentlt;/groupIdgt;  lt;artifactIdgt;javax.enterprise.concurrent-apilt;/artifactIdgt;  lt;versiongt;1.0lt;versiongt;  lt;scopegt;providedlt;/scopegt;  lt;/dependencygt;    lt;dependencygt;  lt;groupIdgt;junitlt;/groupIdgt;  lt;artifactIdgt;junitlt;/artifactIdgt;  lt;versiongt;3.8.1lt;versiongt;  lt;scopegt;testlt;/scopegt;  lt;/dependencygt;  lt;/dependenciesgt; lt;/projectgt;   

Я перепробовал множество решений, найденных в Интернете, но ошибка все равно возникает…

Комментарии:

1. Где осуществляется реализация IMsgPoolManager ? В каком модуле Maven он расположен, как он аннотирован, что такое beans.xml из этого модуля?

2. Реализация IMsgPoolManager находится в одном пакете SpecificDataListener и IMsgPoolManager, в одном модуле. В beans.xml является ли файл описанным в вопросе. Реализация представляет собой аннотированный запуск и одноэлементный

3. Хорошо, извините, реализация не аннотирована синглтоном, и теперь это работает. Но теперь у меня аналогичная проблема с простым классом, который пытается ввести некоторые строковые поля. Класс является аннотированным запуском и одноэлементным. Модуль имеет то же самое beans.xml как и в вопросе. У меня следующая ошибка : WELD-001475: The following beans match by type, but none have matching qualifiers: - Producer Method [String] with qualifiers [BatchProperty Any] declared as [[UnbackedAnnotatedMethod] Produces BatchProperty public org.jberet.creation.BatchBeanProducer.getString(InjectionPoint)] "}}