0

我正在使用 Spring 的 WebServiceTemplate 来使用 SOAP Web 服务,该服务需要超过 1 分钟才能响应。WebServiceTemplate 上的默认读取超时为 60 秒。

为了更改和扩展 readtimeout 属性,我实现了以下代码:

WebServiceMessageSender[] senders = template.getMessageSenders();

        for (WebServiceMessageSender sender : senders) {
           HttpUrlConnectionMessageSender httpComponentsMessageSender =(HttpUrlConnectionMessageSender) sender;
                httpComponentsMessageSender.setReadTimeout(Duration.ofSeconds(300));

        }

现在请求在 60 秒后没有完成。但是即使 SOAP 服务在 120 秒后响应,请求也会保持等待,并且在 300 秒后会引发 java.net.SocketTimeoutException: Read timed out。

现在我只是针对具有网络延迟配置的 MockServer 进行测试。如果我删除延迟并删除 readTimeOut 属性,一切正常。

你知道我做错了什么吗?

4

0 回答 0