Как настроить управляемый запуск bean?

Я хочу, чтобы управляемый bean запускался внутренне при запуске в моем веб-приложении JSF, когда приложение загружается. Как я могу написать этот класс и настроить в Glassfish?

Ответ 1

В JSF с CDI observe инициализация область приложения.

@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- с теперь устаревшими javax.faces.bean аннотациями используйте приложение с областью управляемый bean, который нетерпеливо инициализировано.

@ManagedBean(eager=true)
@ApplicationScoped
public class App {

    @PostConstruct
    public void startup() {
        // ...
    }

    @PreDestroy
    public void shutdown() {
        // ...
    }
}