在 Spring 的 WebServiceTemplate 中设置超时
Setting timeout in Spring's WebServiceTemplate
有没有办法以编程方式设置 Spring 的 WebServiceTemplate 的超时?我看过有关通过应用程序上下文配置文件中的消息发件人设置它的旧文章。但是在我们的项目中,这些对象都是通过代码创建的,而不是通过注入创建的。
我需要降低默认超时时间,因为有时客户端点花费的时间太长,并且会排队其他请求,所以我需要强制它更快地失败。
PS:使用 spring-ws-core-2.2.2.RELEASE.jar
从 Spring Webservices 2.2 开始,您可以使用 Spring 的 ClientHttpRequestMessageSender:
@Service
public class CustomWebServiceImpl extends WebServiceGatewaySupport implements CustomWebService {
private static final int CONNECTION_TIMEOUT = (10 * 1000);
private static final int READ_TIMEOUT = (10 * 1000);
public CustomWebServiceImpl() {
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(CONNECTION_TIMEOUT);
requestFactory.setReadTimeout(READ_TIMEOUT);
setMessageSender(new ClientHttpRequestMessageSender(requestFactory));
}
(...)
}
有没有办法以编程方式设置 Spring 的 WebServiceTemplate 的超时?我看过有关通过应用程序上下文配置文件中的消息发件人设置它的旧文章。但是在我们的项目中,这些对象都是通过代码创建的,而不是通过注入创建的。
我需要降低默认超时时间,因为有时客户端点花费的时间太长,并且会排队其他请求,所以我需要强制它更快地失败。
PS:使用 spring-ws-core-2.2.2.RELEASE.jar
从 Spring Webservices 2.2 开始,您可以使用 Spring 的 ClientHttpRequestMessageSender:
@Service
public class CustomWebServiceImpl extends WebServiceGatewaySupport implements CustomWebService {
private static final int CONNECTION_TIMEOUT = (10 * 1000);
private static final int READ_TIMEOUT = (10 * 1000);
public CustomWebServiceImpl() {
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(CONNECTION_TIMEOUT);
requestFactory.setReadTimeout(READ_TIMEOUT);
setMessageSender(new ClientHttpRequestMessageSender(requestFactory));
}
(...)
}