假设没有存活,当Servlet容器充当独立服务器时,我假设直到将整个响应发送到客户端(例如Web浏览器)后,才会释放Servlet的线程.这是正确的假设吗?

但是,如果servlet在像Nginx这样的反向代理后面,会发生什么呢?响应传递到Nginx之后,线程是否被释放,或者直到响应发送给其最终客户端(例如浏览器)时才保留线程?

更新:让我尝试使它更加清楚.

像nginx这样的响应从Servlet发送到代理仅需要几毫秒(例如2ms).但是,最终的响应可能要花费额外的80毫秒(或大约80毫秒)的时间,才能从Nginx发送到浏览器.一旦将响应发送到nginx,servlet就会释放线程/流,还是直到响应发送到浏览器(即整个80ms),servlet才会保留线程/流.

最佳答案
问题:我假设直到将整个响应发送到客户端(例如Web浏览器)后,才会释放Servlet的线程.这是正确的假设吗?

答:不,这是错误的. Servlet容器只会将内容写入套接字并返回.不能保证从write()方法返回的内容将确保响应已到达客户端.

问题:将响应传递到Nginx之后,或者直到响应发送给最终客户端(例如浏览器)时线程才保留?

回答:当Nginx在后面时,则Servlet容器的客户端是Nginx.它不知道实际的远程客户端.因此,一旦响应写入Nginx,线程将被释放.

dawei

【声明】:唐山站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。