gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:50:24 25 4
gpt4 key购买 nike

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

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

到目前为止我发现了什么:

用于建立连接的套接字在 5 秒后关闭。此超时是底层 sun.net.www.http.HttpClient 中的硬编码默认值。 它不受 tomcat 连接超时或 com.sun.xml.internal.ws.request.timeout 属性控制。仅当服务器响应 Keep-Alive header (例如 Keep-Alive: timeout=60, max=100 )时,才会设置 HttpClient.keepAliveTimeout 变量:see line 752 .

服务器不提供此 header 。

根据this answer这是预期的行为,但真的是这样吗:

The client cannot specify the timeout, it is the server configuration that determines the maximum timeout value. The extra Keep-Alive header can inform the client how long the server is willing to keep the connection open ...

最佳答案

尝试直接通过 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);

关于java - Apache CXF (wsdl2java) 生成的 SOAP 客户端在 5 秒后关闭连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59091179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com