2015-12-15 55 views
0

我们使用Tomcat 7.0.67这是tomcat7几乎最新的Tomcat版本发送最后一个大块。 我们发现在我们运行一些性能测试后,tomcat不会发送正确的分块响应。 它不发回应该是零长度的“最后一块”。当tomcat服务器上没有请求时,问题仍然存在。 有没有人见过这个?有没有解决方法?Tomcat没有分块响应

+0

或任何人可以点我什么是关于计算tomcat的代码分块响应,使我们可以在这个调试? – goodier

回答

0

我找到了原因。我们正在使用异步任务。 在前台线程中,我们在某些情况下调用ServletOutputStream.flush。 在tomcat中,ServletOutputStream.flush将导致tomcat开始计算所需的tomcat的OutputFilter。 IdentityOutputFilter用于非块响应。如果在刷新时设置了“连接:关闭”标题或“内容长度”,则将使用IdentityOutputFilter。 ChunkedOutputFilter用于分块响应

但后台线程可能仍在处理及使用ServletOutputStream的。 在某些情况下,这种过早刷新会使tomcat链接IdentityOutputFilter和ChunkedOutputFilter。 这可能不是预期的tomcat和分块响应开始无法正常工作。

解决方法是不叫在前台线程冲洗,但我相信这仍然是一个Tomcat错误,因为Tomcat的分块响应不应该停止,甚至工作的webapp调用flush过早。