我在一个项目中工作,该项目使用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中著名的连接池呢?
暂无答案!
目前还没有任何答案,快来回答吧!