0

我想管理请求。正是我希望通过将某些请求传递给队列并接下来使用其他线程处理它来延迟某些请求的响应。我正在使用 servlet 的过滤器。在 doFilter 方法中,我不调用 filterChain 的 doFilter,尽管如此,还是会发送响应。在其他线程中,当我从队列中调用 filterChain 上的此方法时,我得到空值。

这两个问题有什么问题(不要立即发送响应?

4

1 回答 1

0

你不应该那样做。请求和响应对象范围仅在内部有效,Servlet's service()并且Filter's doFilter()作为容器调度的一部分调用的方法。

Servlet 规范说......


容器通常在对象上回收响应完成方法以避免响应对象创建的性能开销。开发人员必须意识到,startAsync在上述范围之外维护对未调用相应请求的响应对象的引用可能会导致不确定的行为。

注意:您应该使用 Servlet 3.0 异步请求处理,通过它可以暂停和恢复请求

于 2012-07-11T12:17:38.617 回答