12

我希望托管 bean 在应用程序加载时在我的 JSF Web 应用程序中启动时在内部运行。如何在 Glassfish 中编写此类并进行配置?

4

1 回答 1

20

在带有 CDI 的 JSF 中,观察应用程序范围初始化

@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,该 bean 被急切地初始化。

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

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

    @PreDestroy
    public void shutdown() {
        // ...
    }
}
于 2012-07-13T18:52:38.257 回答