HttpServletRequest重用

时间:2014-09-02 15:23:55

标签: java tomcat servlets web-applications application-server

似乎that some servlet containers在请求之间重用HttpServletRequest(或更一般地,ServletRequest)实例。

问题:

有人指向 servlet规范,此行为(或此类实例引用的有效性规则)已定义

1 个答案:

答案 0 :(得分:8)

它没有在Servlet API中定义。这是一个实现细节。

在3.11中为请求对象(和5.6为响应对象)

  

每个请求对象仅在servlet的范围内有效   服务方法,或在过滤器的doFilter方法的范围内,   除非为组件启用了异步处理   在请求对象上调用startAsync方法。在这种情况下   在发生异步处理的情况下,请求对象保持有效   直到在AsyncContext上调用完成。 通常是容器   回收请求对象以避免性能开销   请求对象创建。开发人员必须意识到维护   对尚未调用startAsync的请求对象的引用   不建议在上述范围之外,因为它可能具有   不确定的结果

这不是必需的,但是常用。

规范中的内容(参见第2.3.3章)是单线程模型。一个请求,一个线程。这样可以清理和重复使用请求。