Servlet 3.0 为异步处理提供了一个监听器,使用 AsyncListener 接口表示。它可以监控如下四种事件:
- 异步线程开始时,调用 AsyncListener 的 onStartAsync(AsyncEvent event) 方法;
- 异步线程出错时,调用 AsyncListener 的 onError(AsyncEvent event) 方法;
- 异步线程执行超时,则调用 AsyncListener 的 onTimeout(AsyncEvent event) 方法;
- 异步执行完毕时,调用 AsyncListener 的 onComplete(AsyncEvent event) 方法;
要注册一个 AsyncListener,只需将准备好的 AsyncListener 对象传递给 AsyncContext 对象的 addListener() 方法即可,如下所示:
AsyncContext ctx = req.startAsync(); ctx.addListener(new AsyncListener() { public void onComplete(AsyncEvent asyncEvent) throws IOException { // 做一些清理工作或者其他 } ... }); |