http连接池java

aoyhnmkz  于 2021-07-09  发布在  Java
关注(0)|答案(0)|浏览(303)

我在一个项目中工作,该项目使用springboot作为框架,并通过soap调用 WebServiceTemplate 在http 1.1协议上。我实施了一个 HTTPClient 这样地:

@Bean
public PoolingHttpClientConnectionManager poolingConnManager() {

    PoolingHttpClientConnectionManager ret = new PoolingHttpClientConnectionManager();
    ret.setDefaultMaxPerRoute(5);
    ret.setMaxTotal(10);

    return ret;
}

@Bean
public CloseableHttpClient httpClient(PoolingHttpClientConnectionManager poolingConnManager) {

    CloseableHttpClient ret = HttpClients.custom()
            .addInterceptorFirst(this.requestHeaderInterceptor)
            .addInterceptorLast(this.requestInterceptor)
            .addInterceptorLast(this.responseInterceptor)
            .setConnectionManager(poolingConnManager)
            .setConnectionTimeToLive(60000L, TimeUnit.MILLISECONDS)
            .build();

    return ret;
}

我们知道,在服务器或客户端关闭此tcp连接之前,多个http请求/响应可以在单个tcp连接中传递。事实上,当我通过cli或wireshark检查打开的连接时,我发现每个域只能打开一个连接,直到服务器关闭这个连接,一个全新的连接才打开。所以我的问题是:
真的有可能(特别是客户端)打开连接池或重用关闭的连接吗?如果是,上面的代码片段有什么问题?我怎样才能看到一个连接池在运行?
如果不是的话,这个计划的目的是什么 PoolingHttpClientConnectionManager 的api?那么db connection中著名的连接池呢?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题