gpt4 book ai didi

从 WildFly8/jdk8 迁移到 WildFly14/jdk11 后,WebService 客户端中出现 java.net.SocketTimeoutException

转载 作者:行者123 更新时间:2023-12-02 01:23:11 24 4
gpt4 key购买 nike

喜欢https://docs.wildfly.org/14/Developer_Guide.html告诉我,我使用以下代码配置了 WebService 客户端的超时:

((BindingProvider) port).getRequestContext().put("javax.xml.ws.client.connectionTimeout", timeoutInMs);
((BindingProvider) port).getRequestContext().put("javax.xml.ws.client.receiveTimeout", timeoutInMs);

只要我的 WebService 客户端在使用 jdk8 的 WildFly8 上运行,就可以正常工作。由于我将其迁移到 WildFly14/jdk11,因此该解决方案不再起作用。我尝试了几个 map 键,例如:

BindingProviderProperties.REQUEST_TIMEOUT
BindingProviderProperties.CONNECT_TIMEOUT

"com.sun.xml.ws.connect.timeout"
"com.sun.xml.ws.request.timeout"

"com.sun.xml.internal.ws.request.timeout"
"com.sun.xml.internal.ws.connect.timeout"

此外,设置系统属性“sun.net.client.defaultConnectTimeout”和“sun.net.client.defaultReadTimeout”也不起作用。

我总是在 1 分钟后收到“java.net.SocketTimeoutException”。我快要放弃了

有人知道吗?

问候,罗伯特

最佳答案

我找到了一个可行的解决方案:

Soap: Set TimeOut using WSDL2Java

因此,在我的示例中,工作代码是:

final Client cl = ClientProxy.getClient(port);
final HTTPConduit httpConduit = (HTTPConduit) cl.getConduit();
final HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(timeoutInMs);
httpClientPolicy.setReceiveTimeout(timeoutInMs);
httpConduit.setClient(httpClientPolicy);

我在 WildFly14 安装的模块中找到了所有需要的库:

system/layers/base/org/apache/cxf/impl/main/
system/layers/base/org/apache/cxf/main/
system/layers/base/javax/xml/ws/api/main/
system/layers/base/org/jboss/ws/tools/common/main/

关于从 WildFly8/jdk8 迁移到 WildFly14/jdk11 后,WebService 客户端中出现 java.net.SocketTimeoutException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57604621/

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