我希望托管bean在应用程序加载时在我的JSF Web应用程序中启动时在内部运行。如何在Glassfish中编写此类并进行配置?
答案 0 :(得分:17)
在带有CDI的JSF中,observe initialization的application scope。
@Named
@ApplicationScoped
public class App {
public void startup(@Observes @Initialized(ApplicationScoped.class) Object context) {
// ...
}
public void shutdown(@Observes @Destroyed(ApplicationScoped.class) Object context) {
// ...
}
}
如果手头有OmniFaces,可以使用@Eager
进行简化。
@Named
@Eager
@ApplicationScoped
public class App {
@PostConstruct
public void startup() {
// ...
}
@PreDestroy
public void shutdown() {
// ...
}
}
在JSF 2.2中,使用now deprecated javax.faces.bean
注释,使用application scoped初始化managed bean的eagerly。
@ManagedBean(eager=true)
@ApplicationScoped
public class App {
@PostConstruct
public void startup() {
// ...
}
@PreDestroy
public void shutdown() {
// ...
}
}