2013-10-30 80 views
0

我在JBoss 5.1上有簡單的servlet。 寫入響應時,如果連接關閉,則不會有異常。 連接由外部讀取超時關閉。寫回應關閉連接時沒有異常

JBoss接收FIN,ACK,帶有ACK的答案,幾秒後發送我的響應(PSH,ACK)並接收RST。

如何確定在servlet中,連接已關閉和/或響應未成功寫入?

+0

當寫大數據(500-600 Kb)迴應我收到java.net.SocketException:損壞的管道 – Rustam

+0

找到的解決方案。我爲JBoss連接器設置了socketBuffer爲-1,默認情況下爲9000字節。這將如何影響Jboss的性能? – Rustam

+0

關閉緩衝區僅有助於本地連接。因爲在沒有緩衝區響應的情況下,分割爲2部分 - 頭部和主體,並且JBoss在發送頭部之後接收到RST,所以發送主體時發生異常。在網絡上,JBoss發送3個數據包(頭部,主體,FIN)並接收三個RST。 – Rustam

回答

0

如果您編寫了足夠的數據,以便在RST到達後您仍在寫入,則會發生IOException:'由對等方重置連接。 TCP緩衝和異步寫入意味着這可能不會發生小寫。

+0

我正在寫RST之前,並從客戶端FIN後。問題是JBoss在接收FIN並且允許寫入響應時沒有完全斷開連接。 – Rustam

相關問題