Использовать Apache HttpClient с включенным кэшированием в качестве клиента Jersey 2 - PullRequest
1 голос
/ 11 февраля 2020

Как использовать настраиваемый Apache HttpClient с клиентом Jersey 2?

HttpClient с кэшированием ( из apache документов )

CacheConfig cacheConfig = CacheConfig.custom()
        .setMaxCacheEntries(1000)
        .setMaxObjectSize(8192)
        .build();
RequestConfig requestConfig = RequestConfig.custom()
        .setConnectTimeout(30000)
        .setSocketTimeout(30000)
        .build();
CloseableHttpClient cachingClient = CachingHttpClients.custom()
        .setCacheConfig(cacheConfig)
        .setDefaultRequestConfig(requestConfig)
        .build();

Использование Apache Http в целом работает путем установки

protected ClientConfig getClientConfig() {
        ClientConfig config = new ClientConfig();
        config.property(HttpUrlConnectorProvider.SET_METHOD_WORKAROUND, true);

        final PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();

        config.property(ApacheClientProperties.CONNECTION_MANAGER, connectionManager);

        final ApacheConnectorProvider connector = new ApacheConnectorProvider();
        config.connectorProvider(connector);

        return config;
    }

Но как использовать пользовательскую конфигурацию клиента http, как описано выше?

1 Ответ

1 голос
/ 28 февраля 2020

Вы можете использовать ApacheHttpClientBuilderConfigurator . Таким образом, вы можете сделать:

config.register(new ApacheHttpClientBuilderConfigurator() {
   public HttpClientBuilder configure(HttpClientBuilder httpClientBuilder) {
      return httpClientBuilder.setDefaultRequestConfig(requestConfig);
   }
});

См. пример .

Клиент кэширования Apache на данный момент не поддерживается должным образом. Вы можете вернуть CachingHttpClientBuilder из метода, но HttpClientBuilder не имеет методов получения, чтобы увидеть, что уже установлено, поэтому вам нужно установить все с нуля.

...