Search code examples
jsfstartupmanaged-bean

How to configure a start up managed bean?


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?


Solution

  • 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() {
            // ...
        }
    }