2016-02-03 15 views
4

我想知道在通過Spring rest模板創建新連接之前,HttpConnection在活動時保持活動狀態的時間。我查看了默認的連接超時和讀取超時參數,但我相信這些用於連接超時的情況下,當連接因爲某些故障而未建立時等。使用Spring Rest模板時,HttpConnection的默認保持活動時間

我在尋找的是,如果沒有任何活動(或)不活動,連接保持活動狀態的時間以及如何通過Spring Rest Template(或者)基礎機制來配置它。

+0

您打算ning在呼叫之間保持http連接是否打開? – jny

+0

我想了解什麼是默認行爲,多長時間的連接可用,而它是無效的 – sam

回答

5

默認情況下,RestTemplate使用SimpleClientHttpRequestFactory,這反過來會打開Java的HttpURLConnection,默認情況下它支持在特定條件下保持活動狀態。如果你想在連接上是如何處理更多的控制,你可以創建restTemplate與HttpComponentsClientHttpRequestFactory,它使用Apache HttpClient庫,如:

@Bean 
RestTemplate restTemplate(SimpleClientHttpRequestFactory factory) { 
    return new RestTemplate(factory); 
} 

你也可以看到一些討論在這裏:

How to Reuse HttpUrlConnection?

Persistent HttpURLConnection in Java

How to use RestTemplate efficiently in Multithreaded environment?

+1

感謝您的答案,它可以幫助我走,最後一個問題 我使用簡單的RestTemplate與SimpleClientHttpRequestFactory,基本上是第一個請求通過(RestTemplate)連接另一個REST服務大約需要5秒鐘,我發現java.net.UrlConnection.connect()正在進行,但隨後的調用很快。如果服務器閒置一分鐘,延遲再次發生,這是默認行爲嗎?連接池連接是否消除了服務器空閒時的延遲? – sam

+0

通常連接時間少於5秒。可能存在網絡問題或目標休息服務的問題。 – jny

+0

我正在搜索如何在成功登錄時重用會話cookie,並且使用HttpComponentsClientHttpRequestFactory它很好(不需要爲每個新請求添加cookie) –