我正在努力优雅地关闭服务,为此我们需要在启动关闭之前检查所有当前请求是否已完成。这是我的关机处理程序:
@Service
public class ShutdownHandler implements HandlerInterceptor {
private int inflightRequests;
public void handleShutdown() {
if(inflightRequests == 0) {
doSomething();
}
}
@Override
public boolean preHandle(...) throws Exception {
inflightRequests++;
return false;
}
@Override
public void afterCompletion(...) {
inflightRequests--;
}
}
如何在我的上下文侦听器的contextDestroyed()方法中添加对handleShutdown()的调用,以及将其添加为处理程序拦截器?有没有办法使用@Autowired?
答案 0 :(得分:0)
将InflightRequests更改为静态,在servlet上下文被销毁时调用新的关闭处理程序并调用shutdown方法。总的来说,有两个关闭处理程序的实例,但似乎有效。