【问题标题】:java.net.SocketTimeoutException in WebService client after migration from WildFly8 / jdk8 to WildFly14 / jdk11从 WildFly / jdk 8 迁移到 WildFly 14 / jdk11 后 Web 服务客户端中的 java.net.SocketTimeoutException
【发布时间】:2019-08-22 07:58:13
【问题描述】:

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

有人知道吗?

问候,罗伯特

【问题讨论】:

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


    【解决方案1】:

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

    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/
    

    【讨论】:

      猜你喜欢
      • 2019-06-16
      • 2015-05-21
      • 1970-01-01
      • 2014-08-10
      • 2015-10-10
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      相关资源
      最近更新 更多