Apache PoolingHttpClientConnectionManager выдает исключение незаконного состоянияJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Apache PoolingHttpClientConnectionManager выдает исключение незаконного состояния

Сообщение Anonymous »

Вот как я это использую –

Код: Выделить всё

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();
Также я поставил блокfinally вокруг http GET —

Код: Выделить всё

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
РЕДАКТИРОВАТЬ. Проблема ушла, если не закрыть CloseableHttpClient в блокеfinally. Может ли кто-нибудь сказать, почему он так себя ведет? Почему пул соединений отключается, если я закрываю клиент?

Является ли closeablehttpclient, указанный выше, дескриптором пула, а не одинарное соединение

Подробнее здесь: https://stackoverflow.com/questions/258 ... -exception
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»