2
Weld CDI에서 @Singleton 및 @Startup 주석 (tomcat 7에서 실행)을 사용하여 응용 프로그램의 시작 클래스를 정의하려고하지만 PostConstruct 메소드가 호출되지 않습니다. Weld의 시작 클래스
import java.util.List;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.ejb.Startup;
import javax.inject.Inject;
import javax.ejb.Singleton;
import javax.persistence.EntityManager;
import se.raindance.squid.core.domain.SquidSettings;
@Singleton
@Startup
public class InitSquid {
@Inject
private Logger log;
@Inject
EntityManager entityManager;
@PostConstruct
public void init() {
System.out.println("startup!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 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);
}
}
}
가 나는이 두 게시물
Startup POJO with WELD 및
Startup EJB doesn't work에서 발견하지만 어느 당신은 @Startup 또는 @javax을 사용할 수 없습니다
당신은 당신의'자바 class'의'import' 섹션을 게시하시기 바랍니다 수 있을까요? –
모든 가져 오기로 Java 클래스를 업데이트했습니다. – Yashar
Pease는'javax.ejb.Startup'과'javax.ejb.Singleton'을 제거하고'javax.inject.Singleton' 만 사용하려고합니다. 'EJB'와'CDI'를 섞지 마십시오. –