Я пытаюсь определить класс запуска для своего приложения в Weld CDI с аннотациями @Singleton и @Startup (работает на tomcat 7), но мой метод PostConstruct никогда не вызывается.
Вот мой класс запуска:
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);
}
}
}
Я попробовал подсказки, которые нашел в этих двух сообщениях Запуск POJO с помощью WELD и Запуск EJB не работает, но это не помогло
import
вашегоjava class
? - person Charlee Chitsuk   schedule 07.05.2013javax.ejb.Startup
иjavax.ejb.Singleton
и использовать толькоjavax.inject.Singleton
. Пожалуйста, не смешивайтеEJB
иCDI
. - person Charlee Chitsuk   schedule 07.05.2013javax.inject.Singleton
НЕ запускается при запуске Tomcat. Он запускается только после запуска ресурса, в который вводится синглтон. - person stackoverflower   schedule 11.11.2013