初始化 CDI Bean 名称不明确
Initializing CDI Bean Name Ambiguous
我在 WebLogic 应用程序服务器上的 JSF 2.2 上有一个 Web 应用程序 运行。
我有一个简单的 java class 并尝试使用 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;
非常感谢有关解决此问题的任何提示。
我最终能够部署。
但是,我不得不从 EAR 中删除 WAR 并单独部署它。由于某种原因,在 EAR 中打包 WAR 并部署失败。不确定这是 WebLogic 还是 EAR 配置的问题。
我在 WebLogic 应用程序服务器上的 JSF 2.2 上有一个 Web 应用程序 运行。
我有一个简单的 java class 并尝试使用 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;
非常感谢有关解决此问题的任何提示。
我最终能够部署。
但是,我不得不从 EAR 中删除 WAR 并单独部署它。由于某种原因,在 EAR 中打包 WAR 并部署失败。不确定这是 WebLogic 还是 EAR 配置的问题。