在Spring的WebServiceTemplate中设置超时

时间:2016-10-06 15:07:26

标签: java spring web-services timeout spring-ws

有没有办法以编程方式设置Spring的WebServiceTemplate的超时?我已经看过关于通过Application Context配置文件中的Message Senders设置它的旧文章。但是在我们的项目中,这些对象是由代码创建的,而不是通过注入创建的。

我需要降低默认超时,因为有时客户的端点需要太长时间,并且排队其他请求,所以我需要强制它更快地失败。

PS:使用spring-ws-core-2.2.2.RELEASE.jar

1 个答案:

答案 0 :(得分:1)

从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));
    }

    (...)
}