java - 使用 HttpRequestInterceptor 和 HttpResponseInterceptor 时出现 ConnectionPoolTimeoutException
问题描述
当我使用没有拦截器的连接时,一切正常:
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(socketTimeout)
.setConnectTimeout(connectTimeout)
.setConnectionRequestTimeout(connectionRequestTimeout)
.build();
return HttpClientBuilder.create()
.setDefaultRequestConfig(requestConfig)
.addInterceptorFirst(new RemoveSoapHeadersInterceptor())
.setSSLSocketFactory(sslConnectionSocketFactory())
.setMaxConnPerRoute(maxConnPerRoute)
.disableCookieManagement()
.setMaxConnTotal(maxHTTPConnectionsTotal)
.setDefaultHeaders(headers).build();
}
但是当我添加拦截器时,一段时间后我收到“超时等待来自池的连接;嵌套异常是 org.apache.http.conn.ConnectionPoolTimeoutException”我应该使用任何手动关闭连接,或者异常的原因是什么?
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(socketTimeout)
.setConnectTimeout(connectTimeout)
.setConnectionRequestTimeout(connectionRequestTimeout)
.build();
return HttpClientBuilder.create()
.addInterceptorLast(httpRequestInterceptor)
.addInterceptorLast(httpResponseInterceptor)
.setRetryHandler(httpExceptionHandler)
.setDefaultRequestConfig(requestConfig)
.addInterceptorFirst(new RemoveSoapHeadersInterceptor())
.setSSLSocketFactory(sslConnectionSocketFactory())
.setMaxConnPerRoute(maxConnPerRoute)
.disableCookieManagement()
.setMaxConnTotal(maxHTTPConnectionsTotal)
.setDefaultHeaders(headers).build();
}
解决方案
推荐阅读
- jmeter - java.lang.IllegalArgumentException:报告生成需要 csv 输出格式
- tensorflow - ValueError: 层 conv1_pad 的输入 0 与层不兼容:预期 ndim=4,发现 ndim=2。收到的完整形状:[无,260]
- arcgis-runtime - ArcGIS 运行时:SceneView 加载 tif 文件不起作用
- c# - 如何在问题主体的上下文中对 2 个列表进行性能迭代?
- mariadb - 计算 MariaDB 10.4 中 json 列的数组中有多少行具有嵌套值
- android - 在 null (Firebase) Flutter 上调用方法
- python - 保存 matplotlib 图的特定部分
- java - 如何制作特定于配置文件的 bootstrap.yml?
- python - 如何使用 pandas 执行 mongodB $lookup 和 $unwind?
- spring - 将 ArrayList 类型转换为 ResponseEntity