【问题标题】:How to configure a start up managed bean?如何配置启动托管bean?
【发布时间】:2012-07-13 13:31:46
【问题描述】:

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

【问题讨论】:

  • 你试过@ManagedBean(eager=true) 吗?如果您使用的是 CDI(@Named 而不是 @ManagedBean),那么您将不得不“观察”应用程序初始化......使用类似这样的东西......public void init(@Observes @Initialized WebApplication webApplication) { //do Something }(实际上我没有在 glassfish 中尝试过,我已经在jBoss AS 7,您可能需要在其他服务器上进行一些配置...检查this out...

标签: jsf startup managed-bean


【解决方案1】:

在带有 CDI 的 JSF 中,observeapplication scopeinitialization

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

在带有 now deprecated javax.faces.bean 注释的 JSF 2.2 中,使用 application scoped managed bean 初始化 eagerly

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

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

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

【讨论】:

    猜你喜欢
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 2016-07-09
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多