- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在我们使用 PoolingClientConnectionManager 4.2.1 的系统上(由于其他依赖项,我们目前无法更新它)。
当有超过一定数量的请求时,我们开始为单个请求获取 SSLPeerUnverifiedExceptions,我目前无法弄清楚原因,也因为一些 Javadoc 只显示“已弃用”。
这是池化的设置:
SchemeRegistry schemeRegistry = SchemeRegistryFactory.createDefault();
Scheme https = getHttpsScheme(sslContext, port);
schemeRegistry.register(https);
PoolingClientConnectionManager connectionManager =
new PoolingClientConnectionManager(schemeRegistry, 5000, TimeUnit.MILLISECONDS);
connectionManager.setMaxTotal(20);
connectionManager.setDefaultMaxPerRoute(20);
return new DefaultHttpClient(connectionManager);
这是日志:
尝试工作:
PoolingClientConnectionManager "Connection request: [route: {s}-><a href="https://myserver][total" rel="noreferrer noopener nofollow">https://myserver][total</a> kept alive: 20; route allocated: 20 of 20; total allocated: 20 of 20]"
DefaultClientConnection "Connection 0.0.0.0:49954<->[server_ip]:443 closed"
PoolingClientConnectionManager "Connection leased: [id: 94198][route: {s}-><a href="https://myserver][total" rel="noreferrer noopener nofollow">https://myserver][total</a> kept alive: 19; route allocated: 20 of 20; total allocated: 20 of 20]"
DefaultClientConnectionOperator "Connecting to myserver:443"
失败的尝试:
PoolingClientConnectionManager "Connection request: [route: {s}-><a href="https://myserver" rel="noreferrer noopener nofollow">https://myserver</a> ][total kept alive: 19; route allocated: 20 of 20; total allocated: 20 of 20]"
DefaultClientConnection "Connection 0.0.0.0:49953<->[server_ip]:443 closed"
PoolingClientConnectionManager "Connection leased: [id: 94196][route: {s}-><a href="https://myserver" rel="noreferrer noopener nofollow">https://myserver</a> ][total kept alive: 18; route allocated: 20 of 20; total allocated: 20 of 20]"
DefaultClientConnectionOperator "Connecting to myserver:443"
DefaultClientConnection "Connection org.apache.http.impl.conn.DefaultClientConnection@4821fdeb closed"
DefaultClientConnection "Connection org.apache.http.impl.conn.DefaultClientConnection@4821fdeb shut down"
PoolingClientConnectionManager "Connection [id: 94196][route: {s}-><a href="https://myserver" rel="noreferrer noopener nofollow">https://myserver</a> ] can be kept alive for 9223372036854775807 MILLISECONDS"
DefaultClientConnection "Connection org.apache.http.impl.conn.DefaultClientConnection@4821fdeb closed"
PoolingClientConnectionManager "Connection released: [id: 94196][route: {s}-><a href="https://myserver" rel="noreferrer noopener nofollow">https://myserver</a> ][total kept alive: 18; route allocated: 19 of 20; total allocated: 19 of 20]"
除了如何摆脱异常,我想知道
最佳答案
通过在异常情况下预先关闭过期和空闲连接添加重试来解决这个问题。
...
try {
result = performWsRequest(request, soapAction);
} catch (WebServiceIOException | SSLPeerUnverifiedException ex) {
if (retryAttempt) {
logAndThrowExceptionUponWsRequest(ex);
} else {
LOGGER.info("Re-trying webservice-request");
cleanConnections();
result = performWsRequestWithRetry(request, soapAction, true);
}
} catch (Exception e) {
logAndThrowExceptionUponWsRequest(e);
}
...
private synchronized void cleanConnections() {
LOGGER.info(
"Cleaning connections. Total message-senders: {}",
this.webServiceTemplate.getMessageSenders().length);
for (WebServiceMessageSender messageSender : this.webServiceTemplate.getMessageSenders()) {
if (messageSender instanceof HttpComponentsMessageSender) {
LOGGER.info("Checking connections of message-sender {}", messageSender);
HttpComponentsMessageSender httpComponentsMessageSender = (HttpComponentsMessageSender)messageSender;
if (httpComponentsMessageSender.getHttpClient() != null
&& httpComponentsMessageSender.getHttpClient().getConnectionManager() != null) {
LOGGER.info("Closing connections");
httpComponentsMessageSender.getHttpClient().getConnectionManager().closeExpiredConnections();
httpComponentsMessageSender.getHttpClient()
.getConnectionManager()
.closeIdleConnections(5000, TimeUnit.MILLISECONDS);
}
}
}
}
关于java - 相当频繁的 SSLPeerUnverifedException 与 PoolingClientConnectionManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34182386/
此问题与 PoolingClientConnectionManager (HttpClient 4.2.5 API) 有关 我在池中最多有 5 个远程连接和一个包含 20 多个 url 的列表,可以从
我有以下使用 PoolingClientConnectionManager 的代码: public static void main(String[] args) { int NoOfSimu
在我的应用程序中,有多个 IntentService 根据用户与应用程序的交互以随机间隔与 Tomcat 服务器连接/通信。 我正在为 Http 使用以下 Singleton public class
我正在使用 Apache DefaultHttpClient与 PoolingClientConnectionManager和 BasicResponseHandler .这些在不同线程之间共享,每个
在 Apache httpclient 4.* 中,为什么所有的方法都被弃用了?如果全部弃用,我们如何有效地使用这个类。 当我执行 PoolingClientConnectionManager.get
PoolingHttpClientConnectionManager 和 PoolingClientConnectionManager 之间有什么区别。为什么 PoolingClientConnect
在我们使用 PoolingClientConnectionManager 4.2.1 的系统上(由于其他依赖项,我们目前无法更新它)。 当有超过一定数量的请求时,我们开始为单个请求获取 SSLPeer
我的网络应用程序在晚上运行作业!遇到问题!它占用了大量内存! 我用命令查找哪个函数占用了java资源! 结果是: [tomcat@uhzd006525 ~]$ jstack 2365
我正在使用 RestClient 连接到远程 JSON API。之前,在 Spring 3.0 中,我使用的是 Commons HTTPClient。我发现由于旧的多线程连接管理器中存在大量锁定,性能
当使用 Apache PoolingClientConnectionManager 时,例如: PoolingClientConnectionManager cm = new PoolingClien
尽管在我的 pom.xml 中没有将其明确引用为依赖项,但此依赖项出现问题。实际的 maven 依赖是: org.apache.httpcomponents ht
使用 Jboss AS7 和 Resteasy 运行默认的万能 key 示例,我完全按照此处的说明操作:https://github.com/resteasy/Resteasy/tree/master
这个问题已经有答案了: Why am I getting a NoClassDefFoundError in Java? (31 个回答) 已关闭 6 年前。 public static void m
我是一名优秀的程序员,十分优秀!