Apache CFX (wsdl2java) 生成的 SOAP 客户端在 5 秒后关闭连接



我有一个用apache-cxf(v3.3.2(生成的SOAP客户端。 客户端使用嵌入式Tomcat在Spring Boot应用程序中运行。

如何指定此 SOAP 客户端的保持活动超时?

到目前为止我发现的:

用于建立连接的插座在 5 秒后关闭。 此超时是基础 sun.net.www.http.HttpClient 中的硬编码默认值。它不受tomcat连接超时或com.sun.xml.internal.ws.request.timeout属性的控制。只有当服务器以 Keep-Alive 标头响应时,才会设置 HttpClient.keepAliveTimeout 变量(例如 Keep-Alive:timeout=60,max=100(:参见第 752 行。

服务器不提供此标头。

根据这个答案,这是预期的行为,但它真的是:

客户端无法指定超时,是服务器配置 这决定了最大超时值。额外的保持活动状态标头 可以通知客户端服务器愿意保留多长时间 连接打开...

尝试直接通过HTTPClientPolicy进行设置。我在我的 CXF 客户端中使用它。

Client client = ClientProxy.getClient(port);
HTTPConduit http = (HTTPConduit) client.getConduit();
// Set connection timeout
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(30000);
httpClientPolicy.setAllowChunking(false);
httpClientPolicy.setReceiveTimeout(30000);
http.setClient(httpClientPolicy);

相关内容

  • 没有找到相关文章

最新更新