我想听一下如果在普通的Servlet Web应用程序中使用ServletContextListener
尽可能地启动或停止JSF应用程序。我怎样才能做到这一点?
答案 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