我试图用@Singleton和@Startup注释(运行在tomcat 7上)为我的应用程序定义一个在Weld CDI中的启动类,但是我的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);
}
}
}发布于 2014-03-06 12:03:54
您不能在can上使用@Startup或@javax.ejb.Singleton注释:这些注释是针对EJB的,而EJB的注释在Tomcat (普通的)上不起作用。如果希望在Tomcat上运行EE应用程序,请查看TomEE项目。
但是,有一个AfterDeploymentValidation事件是在部署完所有东西之后抛出的。您可以编写一个观察者方法来处理该事件,如下文所示:
https://stackoverflow.com/questions/16413997
复制相似问题