就像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”。 我要放弃了
有人有什么主意吗?
关于罗伯特
答案 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/