Apache CFX(wsdl2java)生成的SOAP客户端在5s后关闭连接
我有一个使用ApacheCXF(v3.3.2)生成的SOAP客户端。 客户机使用嵌入式Tomcat在Spring引导应用程序中运行 如何指定此SOAP客户端的保持活动超时 到目前为止,我发现: 用于建立连接的插座在5s后关闭。 此超时是基础sun.net.www.http.HttpClient中硬编码的默认值它不受tomcat连接超时或com.sun.xml.internal.ws.request.timeout属性的控制。 HttpClient.keepAliveTimeout变量仅在服务器使用Keep-Alive标头响应时设置(例如Keep-Alive:timeout=60,max=100): 服务器不提供此标头 根据这一点,这是预期的行为,但它真的是: 客户端无法指定超时,这是服务器配置 确定最大超时值的。额外的保持活动标题 可以通知客户机服务器愿意将数据保留多长时间 连接打开Apache CFX(wsdl2java)生成的SOAP客户端在5s后关闭连接,java,soap,timeout,keep-alive,wsdl2java,Java,Soap,Timeout,Keep Alive,Wsdl2java,我有一个使用ApacheCXF(v3.3.2)生成的SOAP客户端。 客户机使用嵌入式Tomcat在Spring引导应用程序中运行 如何指定此SOAP客户端的保持活动超时 到目前为止,我发现: 用于建立连接的插座在5s后关闭。 此超时是基础sun.net.www.http.HttpClient中硬编码的默认值它不受tomcat连接超时或com.sun.xml.internal.ws.request.timeout属性的控制。 HttpClient.keepAliveTimeout变量仅在服务器使
尝试直接通过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);