java - 使用启用缓存的 Apache HttpClient 作为 Jersey 2 客户端

标签 java jersey-2.0 apache-httpclient-4.x jersey-client

如何将自定义配置的 Apache HttpClient 与 Jersey Client 2 结合使用?

带有缓存的 HttpClient ( from apache docs )

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 客户端配置呢?

最佳答案

您可以使用ApacheHttpClientBuilderConfigurator 。所以你可以这样做:

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

参见the example .

目前不正确支持 Apache 缓存客户端。您可以从该方法返回 CachingHttpClientBuilder,但 HttpClientBuilder 没有 getter 来查看已设置的内容,因此您需要从头开始设置所有内容。

关于java - 使用启用缓存的 Apache HttpClient 作为 Jersey 2 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60171516/

相关文章:

java - java 中奇怪的 char[] siu 。无法复制值并跳过空格

java - Java中的双表

java - Jersey框架如何在REST中实现JAX-RS API?

java - Tomcat 8 和 Jersey 2.7 返回 404 错误

java - HttpClient 中的 setMaxTotal 和 setDefaultMaxPerRoute?

java - 如何将 UrlEncodedFormEntity 添加到 MultipartEntityBuilder

java - 等待通知和 CountDownLatch 之间的区别

java - 如何将参数传递给 Apache Apex 中的 application.java 类?

java - 是否可以将 Spring Restdocs 与 Jersey 应用程序一起使用

来自API的奇怪字符串的java char编码