W JSF z CDI, observe z initialization z 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) {
// ...
}
}
Kiedy mając OmniFaces w rękach, to można uprościć z @Eager
.
@Named
@Eager
@ApplicationScoped
public class App {
@PostConstruct
public void startup() {
// ...
}
@PreDestroy
public void shutdown() {
// ...
}
}
W JSF 2.2- z now deprecatedjavax.faces.bean
opisów, można skorzystać z application scopedmanaged bean który eagerly zainicjowana.
@ManagedBean(eager=true)
@ApplicationScoped
public class App {
@PostConstruct
public void startup() {
// ...
}
@PreDestroy
public void shutdown() {
// ...
}
}
Czy próbowałeś '@ManagedBean (eager = true)'? Jeśli używasz CDI (@Named zamiast @ManagedBean), to musisz zainicjować aplikację "obserwuj" ... z czymś podobnym ... 'public void init (@Observes @Initialized WebApplication webApplication) {//do something} ' (w rzeczywistości nie próbowałem tego w Glassfish, użyłem go w jBoss AS 7 i może być potrzebna konfiguracja na innych serwerach ... sprawdź [this] (http://stackoverflow.com/ pytania/7347516/startup-pojo-on-a-weld-seam3-application) out ... – FMQ