10
我想要一個託管bean在應用程序加載時在我的JSF Web應用程序中啓動時在內部運行。我如何編寫這個類並在Glassfish中配置?如何配置啓動託管bean?
我想要一個託管bean在應用程序加載時在我的JSF Web應用程序中啓動時在內部運行。我如何編寫這個類並在Glassfish中配置?如何配置啓動託管bean?
在帶有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 deprecatedjavax.faces.bean
註解,使用application scopedmanaged bean是eagerly初始化。
@ManagedBean(eager=true)
@ApplicationScoped
public class App {
@PostConstruct
public void startup() {
// ...
}
@PreDestroy
public void shutdown() {
// ...
}
}
你試過了@ManagedBean(eager = true)嗎? 如果你正在使用CDI(@Named而不是@ManagedBean),那麼你將不得不「觀察」應用程序的初始化......類似這樣的事情...... 'public void init(@Observes @Initialized WebApplication webApplication){//do Something}' (實際上我還沒有在glassfish上試過這個,我用它在jBoss AS 7中,你可能需要在其他服務器上進行一些配置... check [this](http://stackoverflow.com/ question/7347516/startup-pojo-on-a-weld-seam3-application)out ... – FMQ 2012-07-13 18:37:17