I want a managed bean to run internally on start up in my JSF web application when the application loads. How can I write this class and configure in Glassfish?
How to configure a start up managed bean?
Asked Answered
In JSF with CDI, observe the initialization of the 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) {
// ...
}
}
When having OmniFaces at hands, this can be simplified with @Eager
.
@Named
@Eager
@ApplicationScoped
public class App {
@PostConstruct
public void startup() {
// ...
}
@PreDestroy
public void shutdown() {
// ...
}
}
In JSF 2.2- with the now deprecated javax.faces.bean
annotations, use an application scoped managed bean which is eagerly initialized.
@ManagedBean(eager=true)
@ApplicationScoped
public class App {
@PostConstruct
public void startup() {
// ...
}
@PreDestroy
public void shutdown() {
// ...
}
}
© 2022 - 2024 — McMap. All rights reserved.
@ManagedBean(eager=true)
? If you are using CDI (@Named instead of @ManagedBean) then you would have to "Observe" app initialization.. with something like this...public void init(@Observes @Initialized WebApplication webApplication) { //do Something }
(actually I have not tried this in glassfish, I have used it in jBoss AS 7 and you might need some configuration on other servers...check this out... – Trinl