2016-11-03 80 views
0

client.close();沒有立即關閉連接到終點。 netstat顯示連接在client.close調用完成後幾秒鐘內打開。 有沒有辦法強制關閉連接立即?Jersey 2客戶端不立即關閉連接

+2

東西,我覺得Jersey客戶端使用HttpURLConnection的,而且我認爲HttpURLConnection的默認使用的持久連接。你嘗試過'http.keepAlive = false'嗎? –

回答

-1

這可能是由於SO_LINGER值的設置,它定義了close()調用和實際關閉連接之間的時間。

有關此套接字選項的更多信息,請參見this SO answer,在Java中可以使用Socket.setSOLinger()來設置值。

我不知道是否有可能設置澤西這個值,至少我無法找到org.glassfish.jersey.client.ClientProperties

+0

SO_LINGER不'定義'close()'調用和真正關閉連接之間的時間'。它定義了在'close()'調用waitng中花費的時間,用於待處理的數據被刷新。它通常是* off *,事實上我從來沒有看到生產代碼被設置爲正值。這個問題的真實解釋是由@BrettKail給出的:HTTP keepalive。 – EJP