spring-ws устарел

Я обнаружил, что конструктор по умолчанию 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.

спасибо,


person jorgebo10    schedule 02.10.2018    source источник
comment
Каково было решение этой проблемы? Имея ту же проблему.   -  person Mejmo    schedule 22.05.2019


Ответы (1)


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

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();

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

person TristDev    schedule 09.08.2019