0

Hello I have a problem about setting connection timeout. I use WebServiceTemplate and it has 1 messageSender (CommonsHttpMessageSender). But is it possible to set different connection timeouts for each URIs(endpoints)?

Sincerely...

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);
    //........
}
Jemo
  • 309
  • 6
  • 19

1 Answers1

0

Spring WS doesn't support different timeouts for different URIs and doesn't plan to add such functionality. Given that your question involves WebServiceTemplate, you can easily configure multiple templates with different timeouts, and use them as desired.

gregturn
  • 2,625
  • 3
  • 25
  • 40
  • Thank you for your answer. Is configuring multiple messageSender for one webServiceTemplate, a way for this purpose also? – Jemo Sep 04 '14 at 08:29