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);
}
}
}
我歡迎任何提示就這個問題
?我一開始並沒有「@singleton」,但是我讀到如果我想使用「@startup」,我必須有@Singleton annotaion的單例類 – Yashar 2013-05-06 14:53:09
applicationscoped與'eager'一起使用, – 2013-05-06 14:57:36