HttpServletRequest重用

MRa*_*ser 5 java tomcat servlets web-applications application-server

似乎某些servlet容器在请求之间重用HttpServletRequest(或更一般地ServletRequest)实例.

题:

可有人Servlet规范地方这种行为(或这些实例的引用的有效性规则)的定义

Sot*_*lis 8

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

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

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

它不是必需的,但是常用.

规范中的内容(参见第2.3.3节)是单线程模型.一个请求,一个线程.这允许清理和重用请求.