2015-12-15 56 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過早。