spring-ws устарела DefaultHttpClient - PullRequest
0 голосов
/ 02 октября 2018

Я обнаружил, что конструктор по умолчанию HttpComponentsMessageSender в spring-ws-core 3.4.0.RELEASE, который зависит от httpclient 4.5.6, создает экземпляр DefaultHttpClient (), который устарел.Однако, когда я попытался установить пользовательский Httpclient с помощью:

HttpComponentsMessageSender httpComponentsMessageSender = new HttpComponentsMessageSender(HttpClientBuilder.create().build());

httpComponentsMessageSender.setReadTimeout (1000l);

я получил:

Caused by: java.lang.UnsupportedOperationException: null
    at org.apache.http.impl.client.InternalHttpClient.getParams(InternalHttpClient.java:211) ~[httpclient-4.5.6.jar:4.5.6]
    at org.springframework.ws.transport.http.HttpComponentsMessageSender.setReadTimeout(HttpComponentsMessageSender.java:149) ~[spring-ws-core-3.0.4.RELEASE.jar:na]

Это правильно, чтоSpring по умолчанию использует устаревший класс?Как мне установить свой пользовательский экземпляр HttpClient?кажется, что если я установил свой собственный HttpClient, я не могу настроить его через HttpCompoemntsMessageSender.

спасибо,

1 Ответ

0 голосов
/ 09 августа 2019

Не уверен, что вы смогли решить эту проблему, но вот решение следующей проблемы:

Caused by: java.lang.UnsupportedOperationException: null
    at org.apache.http.impl.client.InternalHttpClient.getParams(InternalHttpClient.java:211) ~[httpclient-4.5.6.jar:4.5.6]
    at org.springframework.ws.transport.http.HttpComponentsMessageSender.setReadTimeout(HttpComponentsMessageSender.java:149) ~[spring-ws-core-3.0.4.RELEASE.jar:na]

Обратите внимание, HttpComponentsMessageSender.setReadTimeout () настраивает базовый readTimeout HttpClient с помощьюнастройка параметров HttpClient.

Как вы указали выше, вы можете использовать HttpClientBuilder , чтобы сделать это:

HttpComponentsMessageSender httpComponentsMessageSender = new HttpComponentsMessageSender(HttpClientBuilder.create().build());

Решение состоит в том, чтобы установить "DefaultRequestConfig *« на HttpClientBuilder

HttpClientBuilder.create()
                .setDefaultRequestConfig(requestConfig)
                .build();

Как показано ниже, вы можете установить эти параметры конфигурации на уровне HttpClient, определив RequestConfig .Вот пример ниже:

 RequestConfig requestConfig = RequestConfig.custom()
                .setConnectionRequestTimeout(60 * 1000)
                .setConnectTimeout(60 * 1000)
                .setSocketTimeout(60 * 1000)
                .build();

Надеюсь, это поможет.

...