0 голосов
 
412 просмотров
26.09.2019 / 12:48  Death

httpclient уходит в сон(в режим ожидания)

Появилась проблема, если org.apache.httpcomponents.httpclient 4.5 долго стоит, то при любом http запросе выбивает ошибку
  1. 22:15:32.923 [Bot Telegram Executor] ERROR (HttpService.java           :42 ) root - status code: 400, reason phrase: Bad Request
  2.  
  3. org.apache.http.client.HttpResponseException: status code: 400, reason phrase: Bad Request
  4.  
  5. 22:15:32.929 [Bot Telegram Executor] ERROR (HttpService.java           :45 ) root - org.apache.http.impl.client.AbstractResponseHandler.handleResponse(AbstractResponseHandler.java:70)
  6.  
  7. 22:15:32.931 [Bot Telegram Executor] ERROR (HttpService.java           :45 ) root - org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:66)

И следующие запросы идут корректно.

Гуглил я уже по всякому и максимум что нашёл, это упамнинание, когда человек создавал много соединение таких на разные потоки и некоторые соединения уходили в "сон"(режим ожидания). И там не описано, что именно он решал, он просто свёл к одному соединению на приложение. У меня и так и есть, но в после длительного простоя такая вот проблема и как решить - это делать каждый раз запрос ложный куда-то по этому соединению... Это каждый раз нужно перед основным запросом отправлять запрос ложный, или ловить ошибки и повторно запрашивать... То если ошибка эта пришла не из-за простоя, то будет вечный цикл, а второй запрос сразу просто, в 1 из 2 может уже сработать правильно.

Кто сталкивался с этим? Как "оживить" соединение быстро и как решалось это у вас
Ответы
 
0 голосов
 
# 25.12.2019 / 15:43  wRadchuk
Ну например TCP/IP соединение работает в цикле while и ждет клиентов через метод accept(). И как только есть соединение открываем отдельный поток для работаем с ним. Ну а наш метод accept() ожидает следующие соединение. Думаю у вас должно быть что то похожие при HTTP соединении.
Всего: 1

Реклама

Мы в соцсетях

tw tg yt gt