0
你好,我有一个关于设置连接超时的问题。 我使用WebServiceTemplate,它有1个messageSender(CommonsHttpMessageSender)。 但是是否可以为每个URI(端点)设置不同的连接超时?如何在使用WebServiceTemplate和CommonsHttpMessageSender时为不同的URI设置不同的超时时间?
真诚...
public Message sendRequest(OutgoingRequest message, MessageHeaders headers,
EndpointInfoProvider endpointInfoProvider,
WebServiceMessageCallback requestCallback){
Assert.notNull(endpointInfoProvider, "Destination provider is required!");
final Credentials credentials = endpointInfoProvider.getCredentials();
URI destinationUri = endpointInfoProvider.getDestination();
for (WebServiceMessageSender messageSender : webServiceTemplate.getMessageSenders()) {
if (messageSender instanceof CommonsHttpMessageSender) {
HttpClient httpClient = ((CommonsHttpMessageSender) messageSender).getHttpClient();
httpClient.getState().setCredentials(
new AuthScope(destinationUri.getHost(),
destinationUri.getPort(), AuthScope.ANY_REALM,
AuthScope.ANY_SCHEME), credentials
);
httpClient.getParams().setAuthenticationPreemptive(true);
((CommonsHttpMessageSender) messageSender)
.setConnectionTimeout(endpointInfoProvider
.getTimeOutDuration());
}
}
webServiceTemplate.setDestinationProvider(endpointInfoProvider);
//........
}
谢谢你的回答。为一个webServiceTemplate配置多个messageSender,这也是一种方法吗? – Jemo 2014-09-04 08:29:39