0

我正在Java Web App中使用Jersey Client在WebSphere Liberty上運行以獲取位於另一臺服務器上的數據。我的網絡電話是一個HTTP POST,數據作爲響應發送。對於短的數據量,響應在幾秒鐘內返回,所以沒問題。請求花費較長時間時引發異常。我注意到在1分鐘後 java.net.SocketTimeoutException: Read timed out被拋出Websephere中的Jersey客戶端調用拋出java.net.SocketTimeoutException

我採取了相同的代碼,將它插入公共靜態void main。 在那裏,即使請求需要3分鐘,也沒有超時。所以我想這個問題不在澤西島,而是在WebSphere的一些參數。 有一堆參數定義在這裏:

我試圖增加在server.xml中httpOptions幾個值:readTimeoutpersistTimeout,並persistTimeout至600秒,但它並沒有解決這個問題。我在1分鐘後仍然超時。

是否有任何其他控制此行爲的參數? 此致敬禮

+0

似乎不太可能,澤西客戶端將使用由WAS中HTTP支持的任何配置選項管理的套接字。 – covener

回答

2

我發現了一個解決方案:可以在創建客戶端之前在客戶端構建器上設置不同的超時參數。

{ 
    ClientBuilder cb = ClientBuilder.newBuilder() 
    cb.property("com.ibm.ws.jaxrs.client.timeout", "600000"); 
    cb.property("com.ibm.ws.jaxrs.client.connection.timeout", "100000");  
    cb.property("com.ibm.ws.jaxrs.client.receive.timeout", "600000");  
    Client myclient = cb.build(); 
} 
相關問題