Websphere 中的 Jersey 客户端调用抛出 java.net.SocketTimeoutException

Jersey Client Call within Websephere throw java.net.SocketTimeoutException

我在 WebSphere Liberty 上的 Java Web 应用程序 运行 中使用 Jersey Client 来获取位于另一台服务器上的数据。我的网络调用是 HTTP POST,数据作为响应发送。对于少量数据,响应在几秒内返回,所以没有问题。当请求耗时较长时抛出异常。我注意到 1 分钟后 java.net.SocketTimeoutException: Read timed out 被抛出

我采用了相同的代码,并将其插入 public static void main。 在那里,即使请求需要3分钟,也没有超时。所以我想问题不在泽西岛,而是在 WebSphere 的某些参数上。 这里定义了一堆参数:

我尝试将 server.xml httpOptions 中的几个值:readTimeoutpersistTimeoutpersistTimeout 增加到 600 秒,但它没有解决问题。我仍然在 1 分钟后超时。

是否有任何其他参数可以控制此行为? 最好的问候,

我找到了一个解决方案:可以在创建客户端之前在客户端构建器上设置不同的超时参数。

{ 
    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();
}