如何配置启动托管bean?

Posted

技术标签:

【中文标题】如何配置启动托管bean?【英文标题】:How to configure a start up managed 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... 【参考方案1】:

在带有 CDI 的 JSF 中,observe 是 application scope 的 initialization。

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

【讨论】:

以上是关于如何配置启动托管bean?的主要内容,如果未能解决你的问题,请参考以下文章