gpt4 book ai didi

java - 使用 ApacheHttpClient43Engine RestEasy 客户端 v3.6.3.Final 时的 getConnectionManager()

转载 作者:行者123 更新时间:2023-12-02 01:14:15 24 4
gpt4 key购买 nike

我将 WildFly 服务器从 10 迁移到 16。它现在使用版本 3.6.3.Final 的 Resteasy-client,它使用版本 4.5.4 的 http-client。问题是当我从构建器创建restEasyClient 时,我无法在内部创建连接管理器,如下所示:

this.resteasyClient = new ResteasyClientBuilder()
.connectionPoolSize(DEFAULT_POOL_SIZE)
.maxPooledPerRoute(DEFAULT_POOL_SIZE)
.build();

如何从 ApacheHttpClient43Engine 引擎获取连接管理器?我的最终目标是从管理器获取 PoolStats,在我的例子中应该是 PoolingHttpClientConnectionManager [PoolingHttpClientConnectionManager#getTotalStats]。

我用来获取连接管理器的代码如下:

ApacheHttpClient43Engine engine = (ApacheHttpClient43Engine) resteasyClient.httpEngine();
ClientConnectionManager cm = engine.getHttpClient().getConnectionManager();

此方法 getConnectionManager() 已弃用,并且不会获取 HttpClientConnectionManager

如何从我的restEasyClient 获取 PoolStats?

提前致谢

最佳答案

以这种方式构建 HTTP Client 时,您无法获取 RESTEasy 创建的 PoolingHttpClientConnectionManager 实例,原因是 engine.getHttpClient().getConnectionManager() 返回已弃用的 ClientConnectionManager 接口(interface)的不同实现。

相反,你可以做的是:

  1. 创建您自己的 org.jboss.resteasy.client.jaxrs.ClientHttpEngineBuilder 接口(interface)实现,扩展 org.jboss.resteasy.client.jaxrs.ClientHttpEngineBuilder43 并覆盖createEngine(..) 方法:您只需委托(delegate)给 super.createEngine(..),但您可以存储作为第一个参数传递的 HttpClientConnectionManager 实例,该实例应该成为您正在寻找的人。
  2. 然后您可以使用新的自定义 ClientHttpEngineBuilder 创建要在创建客户端时提供的 ClientHttpEngine:

ResteasyClientBuilder 构建器 = new ResteasyClientBuilder();
ClientHttpEngine customClientHttpEngine = newCustomClientHttpEngineBuilder().resteasyClientBuilder(builder).build();
this.resteasyClient = 构建者
.httpEngine(customClientHttpEngine)
.connectionPoolSize(DEFAULT_POOL_SIZE)
.maxPooledPerRoute(DEFAULT_POOL_SIZE)
.build();

  • 稍后,您可以从自定义 ClientHttpEngineBuilder 访问连接管理器
  • 希望这有帮助。

    关于java - 使用 ApacheHttpClient43Engine RestEasy 客户端 v3.6.3.Final 时的 getConnectionManager(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58917970/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com