我试着在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引导应用程序,它执行一些请求。
1条答案
按热度按时间myzjeezk1#
尝试将此配置属性放入
application.yaml
如果使用带spring boot的嵌入式服务器可能是服务器本身在这21秒之后强制连接超时
你能试一下你的代码吗
根据文件
0
值表示从不超时。然后我们可能会从日志中检索到更多关于什么导致超时的信息。httpcomponentsmessagesender的spring文档