【问题标题】:WELD-001318 Cannot resolve an ambiguous dependencyWELD-001318 无法解决模棱两可的依赖关系
【发布时间】:2011-08-29 20:05:54
【问题描述】:

如下部署我的应用程序时出现错误..

Caused by: org.jboss.weld.exceptions.AmbiguousResolutionException: WELD-001318 Cannot resolve an ambiguous dependency between [
Producer Method [String] with qualifiers [@Any @Config] declared as [[method] @Produces @Config public ca.comdev.cdip.mis.enterpriseportal.configuration.ConfigurationProvider.getConfigurationValue(InjectionPoint)], 

Producer Method [String] with qualifiers [@Any @Config] declared as [[method] @Produces @Config public ca.comdev.cdip.mis.enterpriseportal.configuration.ConfigurationProvider.getConfigurationValue(InjectionPoint)]]

而且我只有这样的方法,其标题看起来像这样

@Produces @Config public String getConfigurationValue(InjectionPoint p) throws ConfigurationException{...}

类有这些

@Named
@Singleton
@Startup
public class ConfigurationProvider {...}

请帮忙。这个错误可能比我的代码更模棱两可。

【问题讨论】:

  • 确实很奇怪。您能否确保在类路径上没有两次相同的类,例如在不同的 jars(bean-archives)中?

标签: java java-ee-6 cdi jboss-weld


【解决方案1】:

我在 2 个不同的模块中不小心使用了相同的 EJB 名称“ExternalClient”而发生了这个错误。

 <enterprise-beans>
    <session>
        <ejb-name>ExternalClient</ejb-name> <!-- DUPLICATED -->
        <ejb-class>com.company.ExternalClient</ejb-class>
        <session-type>Stateless</session-type>
        <env-entry>
            <env-entry-name>url</env-entry-name>
            <env-entry-type>java.lang.String</env-entry-type>
            <env-entry-value>http://company.com/API</env-entry-value>
        </env-entry>
    </session>
</enterprise-beans>

这可以在使用 JBoss 时通过在部署期间检查 JNDI 绑定来检测到。 EJB 被实例化了不止一次。

【讨论】:

    猜你喜欢
    • 2017-04-01
    • 2014-06-11
    • 1970-01-01
    • 2019-11-30
    • 2016-02-16
    • 2017-02-20
    相关资源
    最近更新 更多