WELD-001408甚至使用bean-discovery-mode =“ all

时间:2019-05-03 13:52:28

标签: java jboss wildfly cdi weld

我创建了另一篇文章,但显然我不清楚:Wildfly 14 CDI: WELD-001408 on 3rd part JAR after migration from JBoss 7

我正在将系统从java7迁移到java8,并且从jboss7迁移到wildfly14。 其中一个系统具有几个使用@Inject初始化对象的EJB和类。这是一个旧系统,可以正常运行。

在Wildfly 14中进行部署后,我遇到了一些类似这样的错误:

org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type InterfaceZaakIdentificatieGenerator with qualifiers @Default
  at injection point [BackedAnnotatedField] @Inject private nl.interaccess.zakenmagazijn.converter.impl.ZaakCreatieToEntityConverter.zaakIdentificatieGenerator
  at nl.interaccess.zakenmagazijn.converter.impl.ZaakCreatieToEntityConverter.zaakIdentificatieGenerator(ZaakCreatieToEntityConverter.java:0)

经过研究,我发现这是一个非常常见的错误,它的发生是因为在Wildfly中,他们使用带有Weld的较新版本的CDI并添加 bean-discovery-mode =“ all” 解决了问题,但就我而言,即使将其添加到文件中,它仍然会给我该错误。

这是我的beans.xml(位于/project-war/src/main/webapp/WEB-INF/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"
       version="1.1" bean-discovery-mode="all">
    <interceptors>
        <class>nl.interaccess.zakenmagazijn.manager.WsdlFaultAdvice</class>
        <class>nl.interaccess.zakenmagazijn.profiler.ZakenmagazijnProfilerImpl</class>
        <class>nl.interaccess.zakenmagazijn.profiler.ZTCProfilerImpl</class>
    </interceptors>
</beans>

重要: 就像我说的那样,该系统在JBoss7上运行良好,因此它不是错误的批注或代码中的任何其他类型的错误,它必须与配置相关。

为更具体的示例添加更多信息:

界面:

package nl.interaccess.zakenmagazijn.ztc;

public interface InterfaceZtcKermZaken {    
    GetZoekKenmschermZTCPlusAntwoord getZaken(GetZoekKenmschermZTCPlusZoeken request);
}

实现:

package nl.interaccess.zakenmagazijn.ztc;

@LocalBean
@Stateless(name = "ZtcKermZakenImpl")
@TransactionTimeout(value = 5, unit = TimeUnit.MINUTES)
@Perf4jZTCProfiler
public class ZtcKermZakenImpl extends ZTCQueryUtils implements InterfaceZtcKermZaken {

    @Override
    public GetZoekKenmschermZTCPlusAntwoord getZaken(GetZoekKenmschermZTCPlusZoeken request) {
        //Implementation
    }

}

尝试注射时出现错误的地方:

package nl.interaccess.zakenmagazijn.manager;

@LocalBean
@Stateless(name = "ZakenmagazijnManager")
@WsdlFaultAdviceBinding
@Perf4jZakenmagazijnProfiler
public class ZakenmagazijnManagerImpl implements ZakenPortType {

    @Inject
    private InterfaceZtcKermZaken ztcKerm;

}

0 个答案:

没有答案