0

こんにちは、接続タイムアウトの設定に問題があります。私は WebServiceTemplate を使用しており、1 つの messageSender (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);
    //........
}
4

1 に答える 1

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.

于 2014-09-03T15:55:44.443 に答える