问题描述
我在一个项目中工作,该项目使用 Spring Boot 作为框架并通过 webservicetemplate
在 HTTP 1.1 协议上进行 SOAP 调用。
我已经实现了这样的 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;
}
我们知道多个 HTTP 请求/响应可以在单个 TCP 连接中传递,直到服务器或客户端关闭此 TCP 连接。 事实上,当我通过 CLI 或 WireShark 检查打开的连接时,我发现每个域只能打开一个连接,直到服务器关闭此连接,因此打开了一个全新的连接。 所以我的问题是:
-
真的有可能(尤其是客户端)打开连接池或重用关闭的连接吗? 如果是,上面代码片段中的问题是什么?我如何才能看到正在运行的连接池?
-
如果不是,
PoolingHttpClientConnectionManager
的 API 的目的是什么?那么DB连接中著名的连接池呢?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)