SimpleHttpConnectionManager используется неправильно - PullRequest
8 голосов
/ 22 июня 2010

SimpleHttpConnectionManager используется неправильно. Убедитесь, что HttpMethod.releaseConnection () всегда вызывается и что только один поток и / или метод одновременно используют этот диспетчер соединений.

Кто-нибудь знает, почему эта ошибка появляется и является причиной того, что файлы, которые я хочу загрузить, или сбой, и повторная попытка или загрузка не завершенной

Спасибо!

Ответы [ 2 ]

12 голосов
/ 22 июня 2010

Убедитесь, что вы не используете SimpleHttpConnectionManager для создания и использования соединений из нескольких потоков. Простой диспетчер соединений не предназначен для него - он всегда возвращает одно и то же соединение, и это не безопасно для потоков.

В многопоточной среде используйте другой менеджер, который использует пул соединений. См. MultiThreadedHttpConnectionManager .

5 голосов
/ 13 ноября 2014

Предпочитаю не брать на себя ответственность за это, но согласно ответу Эяля Шнайдера, найдите больше информации об использовании MultiThreadedHttpConnectionManager в Отличный блог Vincent de Villers .

Фрагмент кода, скопированный в случае исчезновения ссылки:

HttpClient httpclient = new HttpClient(new MultiThreadedHttpConnectionManager());
GetMethod httpget = new GetMethod("http://www.myhost.com/");
try {
    httpclient.executeMethod(httpget);
    Reader reader = new InputStreamReader(
        httpget.getResponseBodyAsStream(), httpget.getResponseCharSet());
    // consume the response entity
} finally {
    httpget.releaseConnection();
}
...