我想管理请求。我希望通过将一些请求传递给队列然后使用其他线程处理它来对某些请求进行延迟响应。我正在使用servlet的过滤器。在doFilter方法中,我不会调用filterChain的doFilter,尽管如此,仍会发送响应。在其他线程中,当我在队列中的filterChain上调用此方法时,我变为null。
这两个问题出了什么问题(不要立即发送回复?
答案 0 :(得分:0)
你不应该这样做。请求和响应对象作用域仅在作为容器分派的一部分调用的Servlet's service()
和Filter's doFilter()
方法内有效。
Servlet规范说......
容器通常在对象上循环响应完成方法,以避免响应对象创建的性能开销。开发人员必须意识到,在上述范围之外,维护对尚未调用相应请求startAsync
的响应对象的引用可能会导致非确定性行为。
注意:您应该使用Servlet 3.0异步请求处理,通过该处理可以暂停和恢复请求。