是否可以使用该应用程序启动CDI Bean?
我有这个豆:
@ApplicationScoped
@Named
public class MyBean implements Serializable {
@Inject
private Helper helper;
@PostConstruct
public void init() {
helper.doThings();
}
}
我希望这个bean在部署时从应用程序开始。
我正在使用weld-servlet和tomcat7:
<dependency>
<groupId>org.jboss.weld.servlet</groupId>
<artifactId>weld-servlet</artifactId>
<version>${weld-servlet.version}</version>
<scope>compile</scope>
</dependency>
答案 0 :(得分:3)
尝试:
public void startup(@Observes @Initialized
(ApplicationScoped.class) Object context){
//your code here
}
这将确保该方法在启动时执行,并启动您的bean。
或者您可以使用OmniFaces @Eager
批注。
答案 1 :(得分:0)
确保您的tomcat7变体支持CDI(请参见tomcat version comparison) 然后,
@Startup
@Singleton
public class MyBean {
@PostConstruct
private void init() {
// place your initialization code here
}
}