2013-05-06 89 views
2

我正在使用tomcat在Weld CDI上設置一個應用程序,並嘗試在應用程序啓動時運行類以啓動實體管理器。 我收到以下異常絞車,表明我的班級有多個範圍。焊接CDI範圍異常

WELD-000046 At most one scope may be specified on [email protected] @Singleton class se.raindance.squid.core.init.InitSquid 

這裏是我的InitSquid.Java

@ApplicationScoped 
@Singleton 
@Startup 
public class InitSquid { 

@Inject 
private Logger log; 


@Inject 
EntityManager entityManager; 

/** 
* 
* @param startupEvent is sent when JSF is ready and up and running(After first 
*  request to FacesServlet). 
*/ 
@PostConstruct 
public void init() { 

System.out.println("stutrup!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! InitSquid"); 
// Init Rainlets 
InitRainlets initRainlets = new InitRainlets(entityManager); 
initRainlets.init(); 

initSquidSettings(); 

} 

private void initSquidSettings() { 
List<SquidSettings> settingsList = (List<SquidSettings>) entityManager 
    .createQuery(
     "select squidsettings from SquidSettings squidsettings") 
    .getResultList(); 

if (settingsList.size() == 0) { 
    log.info("No SquidSettings entity exists in system, creating one"); 

    SquidSettings settings = new SquidSettings(); 
    settings.setSubledgerRestResourceURI("http://localhost:8080/subledger-webapp/resteasy/"); 
    entityManager.persist(settings); 
} 
} 

} 

我歡迎任何提示就這個問題

回答

2

你指定bean既單身和applicationscoped。嘗試與一個解決。

這個問題應該給出提示上使用哪一個:你告訴我,「@辛格爾頓」是在焊縫中的適用範圍stackoverflow.com/questions/4555844/what-is-the-difference-between-applicationscoped-and-singleton-scopes-in-cdi

+0

?我一開始並沒有「@singleton」,但是我讀到如果我想使用「@startup」,我必須有@Singleton annotaion的單例類 – Yashar 2013-05-06 14:53:09

+0

applicationscoped與'eager'一起使用, – 2013-05-06 14:57:36