从WildFly8 / jdk8迁移到WildFly14 / jdk11

时间:2019-08-22 07:58:13

标签: java timeout wildfly webservice-client java-11

就像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”。 我要放弃了

有人有什么主意吗?

关于罗伯特

1 个答案:

答案 0 :(得分:0)

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

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/