webservicetemplate超时仅在配置为21秒以下时有效

9wbgstp7  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(451)

我试着在webservicetemplate上设置一个超时,它只有在21秒以下才起作用,如果我试着设置超过21秒的超时,它将不起作用,它将在每次达到21秒时超时。我试过很多配置,大多数配置都在做同样的事情。

@Bean
public WebServiceTemplate munisService() {
    WebServiceTemplate template = new WebServiceTemplate();

    template.setMarshaller(service1Marshaller());
    template.setUnmarshaller(service1Marshaller());

    template.setDefaultUri(ancomUrl);

    HttpComponentsMessageSender httpComponentsMessageSender = new HttpComponentsMessageSender();
    httpComponentsMessageSender.setReadTimeout(180000);
    httpComponentsMessageSender.setConnectionTimeout(180000);
    template.setMessageSender(httpComponentsMessageSender);

    return template;
}

@Bean
ServiceImpl ServiceBean(Jaxb2Marshaller marshaller) {
    ServiceImpl service= new ServiceImpl ();
    service.setWebServiceTemplate(munisService());
    service.setDefaultUri(ancomUrl);
    service.setMarshaller(marshaller);
    service.setUnmarshaller(marshaller);
    return service;
}

有人知道为什么会这样吗?如果有帮助的话,这是个例外,我使用的是httpclient 4.5.13

org.springframework.ws.client.WebServiceIOException: I/O error: Connection timed out: connect; nested exception is java.net.ConnectException: Connection timed out: connect

请求也是在localhost上完成的,我正在localhost上运行一个spring引导应用程序,它执行一些请求。

myzjeezk

myzjeezk1#

尝试将此配置属性放入 application.yaml 如果使用带spring boot的嵌入式服务器

server.connection-timeout=120s

可能是服务器本身在这21秒之后强制连接超时
你能试一下你的代码吗

httpComponentsMessageSender.setReadTimeout(0);
httpComponentsMessageSender.setConnectionTimeout(0);

根据文件 0 值表示从不超时。然后我们可能会从日志中检索到更多关于什么导致超时的信息。
httpcomponentsmessagesender的spring文档

相关问题