2017-03-15 81 views
0

我有一個Web應用程序在WebLogic應用程序服務器上運行在JSF 2.2上。初始化CDI Bean名稱不明確

我有一個簡單的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; 

上解決這個問題的任何暗示的高度讚賞。

+1

尋找鏈接可能會幫助你http://stackoverflow.com/questions/10994158/difference-between-named-and-managedbean-annotations-in-jsf2-0-tomcat7 –

+1

從第一眼看 - 異常說:有兩個同名的bean(「appContext」)。嘗試給你的bean定製一個名稱。例如。 '@Named(「myAppContextBean」),看看會發生什麼。 – Siliarus

+0

謝謝@Siliarus!我已經嘗試了您的建議,但仍然收到相同的錯誤消息。它顯然比實際顯示的錯誤信息還要做其他事情。 –

回答

0

我最終能夠部署。

但是,我必須從EAR中刪除WAR並單獨部署它。出於某種原因,將WAR打包到EAR中並部署失敗。不確定這是否是WebLogic或EAR配置的問題。