【问题标题】:Initializing CDI Bean Name Ambiguous初始化 CDI Bean 名称不明确
【发布时间】:2017-08-06 20:51:41
【问题描述】:

我有一个通过 WebLogic 应用程序服务器在 JSF 2.2 上运行的 Web 应用程序。

我有一个简单的 java 类,并尝试使用 CDI 将其初始化为 ApplicationScoped 对象。下面的代码工作正常并被部署。

import javax.enterprise.context.ApplicationScoped;

@ApplicationScoped
public class AppContext {
    public AppContext() {
    }
}

但是,当我尝试使用 @Named 注释初始化对象时,它无法部署任何东西

import javax.enterprise.context.ApplicationScoped;
import javax.inject.Named;

@Named
@ApplicationScoped
public class AppContext {
    public AppContext() {
    }
}

异常日志如下:

weblogic.management.DeploymentException: CDI deployment failure:WELD-001414: Bean name is ambiguous. Name appContext resolves to beans: [Managed Bean [class beans.AppContext] with qualifiers [@Default @Any @Named], Managed Bean [class beans.AppContext] with qualifiers [@Default @Any @Named]]:org.jboss.weld.exceptions.DeploymentException:WELD-001414: Bean name is ambiguous. Name appContext resolves to beans: [Managed Bean [class beans.AppContext] with qualifiers [@Default @Any @Named], Managed Bean [class beans.AppContext] with qualifiers [@Default @Any @Named]]
    at org.jboss.weld.bootstrap.Validator.validateBeanNames(Validator.java:641)
    at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:487)
    at org.jboss.weld.bootstrap.WeldStartup.validateBeans(WeldStartup.java:446)
    at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:90)
    at com.oracle.injection.provider.weld.WeldInjectionContainer.start(WeldInjectionContainer.java:150)
    Truncated. see log file for complete stacktrace

还有WEB-INF\beans.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>

应用程序运行于:

JDK 1.8 b121;
Mojarra JSF 2.2;
WebLogic 12.2.1.1;

非常感谢任何有关解决此问题的提示。

【问题讨论】:

  • 寻找链接可能对你有帮助stackoverflow.com/questions/10994158/…
  • 乍一看 - 异常说有两个同名的bean(“appContext”)。尝试为您的 bean 指定一个自定义名称。例如。 `@Named("myAppContextBean") 看看会发生什么。
  • 谢谢@Siliarus!我已经尝试了您的建议,但仍然收到相同的错误消息。除了显示的实际错误消息之外,它肯定还有其他事情要做。

标签: jsf weblogic cdi


【解决方案1】:

我最终能够部署。

但是,我必须从 EAR 中删除 WAR 并单独部署它。出于某种原因,将 WAR 打包到 EAR 中并部署失败。不确定这是否是 WebLogic 或 EAR 配置的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多