在JSF中有类似ServletContextListener的东西吗?

时间:2012-08-29 12:19:19

标签: jsf listener startup shutdown

我想听一下如果在普通的Servlet Web应用程序中使用ServletContextListener尽可能地启动或停止JSF应用程序。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:5)

您可以使用热切初始化的@ApplicationScoped @ManagedBean,并分别使用@PostConstruct@PreDestroy注释所需的启动/关闭挂钩方法。

所以:

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

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

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

}

请注意,意味着您无法在JSF网络应用中使用ServletContextListener。 JSF建立在Servlet API之上,因此意味着您可以继续使用它。使用新的Servlet 3.0 @WebListener注释,也可以在不需要web.xml的情况下对其进行配置:

@WebListener
public class Config implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent event) {
        // ...
    }

    @Override
    public void contextDestroyed(ServletContextEvent event) {
        // ...
    }

}

答案 1 :(得分:2)

您可以为此提供系统事件侦听器。 有关详细信息,请参阅此博文:Bootstrapping JSF applications with system events