3

我想听一个 JSF 应用程序是否像ServletContextListener普通的 Servlet Web 应用程序一样启动或停止。我怎样才能做到这一点?

4

2 回答 2

6

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

所以:

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

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

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

}

请注意,这并不意味着您不能ServletContextListener在 JSF webapp 中使用 a。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) {
        // ...
    }

}
于 2012-08-29T12:37:44.480 回答
2

您可以为此提供一个系统事件侦听器。有关更多详细信息,请参阅此博文:使用系统事件引导 JSF 应用程序

于 2012-08-29T14:07:12.687 回答