#spring-boot #webservicetemplate
Вопрос:
Я использую WebServiceTemplate Spring для использования веб-службы SOAP, для ответа на которую требуется более 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: Время ожидания чтения истекло.
Прямо сейчас я просто тестирую макет сервера с конфигурацией сетевой задержки. Если я удалю задержку и удалю свойство ReadTimeout, все будет работать нормально.
Ты хоть представляешь, что я делаю не так?