这是我的用法-
private static final PoolingHttpClientConnectionManager connPool;
static {
connPool = new PoolingHttpClientConnectionManager();
// Increase max total connection to 200
connPool.setMaxTotal(200);//configurable through app.properties
// Increase default max connection per route to 50
connPool.setDefaultMaxPerRoute(20);//configurable through app.properties
}
CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionManager(connPool) .build();
另外,我在http GET周围放置了一个finally块-
finally {
try {
httpClient.close();
} catch (IOException e) {
LOGGER.error(e.getMessage());
}
}
这是我的堆栈跟踪-
java.lang.IllegalStateException: Connection pool shut down
at org.apache.http.util.Asserts.check(Asserts.java:34)
at org.apache.http.pool.AbstractConnPool.lease(AbstractConnPool.java:169)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.requestConnection(PoolingHttpClientConnectionManager.java:217)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:157)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:194)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:85)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106)
at com.A.B.C.CustomHttpClient.doGETAndValidate(CustomHttpClient.java:44)
at com.A.B.C.SiteMonitorTask.monitorAndUpdateEndPoints(SiteMonitorTask.java:48)
at com.A.B.C.SiteMonitorTask.run(SiteMonitorTask.java:37)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
我正在使用Quartz计划监视Http端点的工作。这是我的连接池配置
totalMaxHttpConn=200
maxHttpConnPerRoute=20
Maven依赖..工件版本
httpclient 4.3.1
httpcore 4.3.1
编辑 -好吧,通过不关闭finally块中的CloseableHttpClient,问题解决了。有人能说出为什么这样吗?
如果关闭客户端,为什么连接池会关闭?
是上面的closeablehttpclient是池的句柄,而不是单个conn
此行为是由于HC 4.3中的错误所致。它已在HC
4.4a1中修复。从4.4版本开始,CloseableHttpClient#close
仅在客户端独占时才应自动关闭连接池
在包含JavaFX警报的类上运行一些单元测试,我实现了以下try-的块: 在对也没有修复它的调用代码进行顶级尝试捕获之后。 叠: 有什么方法可以解决这个问题? 我从错误中得到的是,没有JavaFX场景/舞台可以与警报关联,但我不确定如何处理这一点。
我正在尝试使用下面的快速加载API 连接…等是完美的。 我确切地知道它在哪里失败 例外情况是 < code >线程“main”Java . lang . illegalstateexception中出现异常:示例失败。 这是我试图上传的表格。它是格式,当我通过记事本打开它时,它看起来像这样 为什么我会得到这个异常?我该如何改进?据我理解问题是< code > pstmtfld . setascii
问题内容: 如何将轮询线程传递给另一个线程进行处理。程序执行在具有主方法和线程池的控制器类中: 主类控制器 具有轮询类的线程的方法 具有proc类的线程的方法 轮询类和控制器类 我的任务和问题是: 1.控制器应同时处理轮询器和处理器线程,并且应仅调用轮询器和处理器线程 2.现在我的问题是如何使轮询线程等待3秒并并行通知处理器。 我得到如下错误: 这里如何实现异步处理? 问题答案: 你需要阅读的东西
这是我如何使用它 - 此外,我已经在超文本传输协议GET周围放置了一个最终块- 这是我的堆栈跟踪- 我正在使用Quartz来安排监控Httpendpoint的工作…这是我的连接池配置 马文依赖..神器版本 编辑-嗯,这个问题通过在最后一个块中不关闭CloseableHttp客户端而得到解决…有人能告诉我为什么它会这样吗?如果我关闭客户端,为什么连接池会关闭? 上面的closeablehttpcli
我的应用程序处于生产状态,它支持从API 8到23。我最近更新了应用程序,使其具有使用导航抽屉的材料设计。此版本支持从 14 到 23。 该应用程序在API 21[Lollipop]及以上版本上运行良好,但有4.4“java illegalstateexception android.support.v7.app.AppCompatDelegateImplV7.createSubDecor”的崩溃
我想返回200以外的HTTP状态,而不使用注释。 这样做的原因是,并不是每次调用我的应用程序(导致状态为not OK)都应该抛出异常,至少在我看来不是这样。 例如,如果一个用户试图登录系统,但提供了一个不准确的密码,我认为没有理由为了能够返回401状态而抛出异常。相反,我希望能够从“常规”方法中返回状态。 这背后的原因是,抛出不必要的异常既弄乱了我的日志文件,又“使用”了我的日志聚合器(Rollb