如何升级过滤器以支持Servlet 3.0异步servlet

Sha*_*mik 9 server-push servlet-3.0 java-ee-6

我有一个servlet,用于从许多第三方REST数据点获取数据,集成所有数据并以HTML格式报告数据.我也有一个过滤器,其流程如下 -

  1. 请求到达过滤器时创建事件记录,并将eventrecord对象添加到请求中
  2. 执行chain.doFilter - 它允许servlet向eventrecord添加更多细节
  3. 在返回浏览器的路上,filter获取eventrecord对象并记录它.

现在,如果我使用异步servlet AsyncContext context = request.getAsyncContext();,它将与相同的REST数据点进行通信,但是当数据准备就绪时,它将写入响应流而不是等待所有REST数据点响应,我将如何重写我的过滤器?是否会附加到负责从REST数据点刷新数据的线程,以便一旦处理完所有数据并将其记录下来,它将记录事件记录?有没有可以学习的常见模式来理解如何使用Servlet 3.0的异步servlet处理这样的用例?我使用的是JDK 6.0,Tomcat 7.0.

Tim*_*Tim 6

只需@WebFilter(urlPatterns = {"/*" }, asyncSupported = true)为您的过滤器添加web-xml即可.

或者添加 <async-supported>true</async-supported>