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); 
    //........ 
} 

回答

0

春WS不支持不同的超时为不同的URI,并且不打算添加这样的功能。鉴于您的问题涉及到WebServiceTemplate,您可以轻松配置具有不同超时的多个模板,并根据需要使用它们。

+0

谢谢你的回答。为一个webServiceTemplate配置多个messageSender,这也是一种方法吗? – Jemo 2014-09-04 08:29:39

相关问题