当前位置: 首页 > 知识库问答 >
问题:

PoolingHttpClientConnectionManager如何管理连接?

端木高邈
2023-03-14

我有一个问题,它是什么是PoollightTPClientConnectionManager的httpconnection

我知道,如果我们使用PoolighttpClientConnectionManager,它会减少建立连接的时间(例如ssl握手tcp在此处输入代码握手等),因为它会重用连接。

然而,我对http连接重用的理解是保持活动状态,当服务器支持它时,我们可以使用它。如果主机不支持keep-alive连接,我们将无法使用keep-alive与主机通信。

下面是我的问题,

如果我使用PoolingHttpClientConnectionManager来管理非保活服务器环境上的连接,ConnectionManager是否管理连接?还是它根据请求创建连接?

如果ConnectionManager管理连接,那么ConnectionManager如何保持连接?管理器是否定期发送字节?


共有1个答案

艾璞瑜
2023-03-14

如果不定义HttpClient,它将充当连接,可以无限期保持活动状态,来自Apache http文档:

如果响应中不存在Keep Alive标头,HttpClient会假定连接可以无限期保持活动。

如果要定义“保持活力”策略,请参见示例:

ConnectionKeepAliveStrategy myStrategy = new ConnectionKeepAliveStrategy() {
    @Override
    public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
        HeaderElementIterator it = new BasicHeaderElementIterator
            (response.headerIterator(HTTP.CONN_KEEP_ALIVE));
        while (it.hasNext()) {
            HeaderElement he = it.nextElement();
            String param = he.getName();
            String value = he.getValue();
            if (value != null && param.equalsIgnoreCase
               ("timeout")) {
                return Long.parseLong(value) * 1000;
            }
        }
        return 5 * 1000;
    }
};
 类似资料:
  • 问题内容: 我正在将MongoDB与Java结合使用,并且对我的连接存在一些问题。首先,我应该如何连接到Mongo?我应该使用静态客户端并保持打开状态吗?因为连接大约需要500毫秒。因此,在用户需要数据时始终连接它不是最好的主意吗? 但是接下来的问题是。当我进行一些查询时,我收到错误消息或。 那么,我应该如何管理整个MongoDB连接呢?始终等待500毫秒是减慢速度并在10个连接不太好之后重启服务

  • 问题内容: 我目前正在尝试使用进行多个请求。 我用谷歌搜索了如何做到这一点,答案是使用。 至此,我得到了: 然后我尝试了一个请求,并且一切正常。 然后,我通过cmd创建了一个信任库,并导入了目标网站的证书,使用我的信任库设置并设置的of : 如果我尝试执行Https,则会出现异常。 如果我做同样的事情,但一切正常。 谁能告诉我如何使它起作用?(不用担心,我不会创建任何ddos工具) 提前致谢! P

  • 创建一个连接 类org.jivesoftware.smack.XMPPConnection管理你的XMPP服务器的连接,默认实现类为org.jivesoftware.smack.XMPPTCPConnection。 主要是使用两个构造函数,第一个是 XMPPTCPConnection(String) ,它把 你想连接到服务器名称 作为参数。 连接和断开 // Create the configur

  • 基于apache Kafka文档,我的问题是如何控制窗口的大小?保持主题上的数据的大小是一样的吗?或者例如,我们可以将数据保留一个月,但只加入过去一周的流? 有没有什么好的例子来展示一个窗口的KStream-to-kStream窗口连接? 在我的例子中,假设我有2个KStream、和我希望能够加入10天的到30天的。

  • 我们使用Jersey(2.22.2版)执行REST请求,使用ApacheConnectorProvider和PoolightTPClientConnectionManager管理连接池。 是否有办法从租赁连接列表中手动释放连接? PoolingHttpClientConnectionManager提供了关闭过期和空闲连接的方法,但这将从可用连接列表中关闭和删除连接,这不是我要找的。 我想这样做的原

  • 我使用作为我的数据源实现,我的代码获取连接并关闭连接,如下所示: 当我完成连接工作时,我将关闭它 我的问题是:确实是关闭的,所以当连接像一样关闭时,数据源是如何工作的。我听说datasource connection close并不是真正的close,只是release,但我在datasource类中找不到release API。我想知道datasource如何管理数据库连接的创建、关闭和释放。