Получение java.io.IOException: существующее соединение было принудительно закрыто удаленным хостом

Я звоню в IBM Cloud BPM. Иногда звонки работают нормально. Но иногда выдает следующую ошибку.

java.io.IOException: An existing connection was forcibly closed by the remote host.

java.io.IOException: An existing connection was forcibly closed by the remote host
    at sun.nio.ch.SocketDispatcher.read0(Native Method)
    at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43)
    at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)

Может ли кто-нибудь помочь мне в решении этой проблемы.

Любая помощь приветствуется.


person Rajesh Kohir    schedule 13.06.2016    source источник
comment
это может означать, что вызов остатка не обрабатывается должным образом на другом конце или вызов остатка имеет неправильный формат.   -  person piyushj    schedule 13.06.2016
comment
Это означает, что сервер, с которым вы пытаетесь связаться, закрыл сетевое соединение. Попробуйте выяснить, почему он это делает. Возможно, где-то на сервере есть файл журнала, который может содержать сообщение об ошибке, которое может быть полезно для выяснения, почему это происходит.   -  person Jesper    schedule 13.06.2016
comment
Piyushj, Если вызов rest имеет неправильный формат, он должен каждый раз терпеть неудачу. Он проходит несколько раз.   -  person Rajesh Kohir    schedule 13.06.2016
comment
Jesper, Это вызов для отдыха в IBM Cloud BPM. Я думаю, они не позволяют мне получить доступ к файлу журнала. Могу ли я получить доступ к файлу журнала Cloud?   -  person Rajesh Kohir    schedule 13.06.2016
comment
также может быть прокси-сервером/брандмауэром между ними, который закрывает соединение   -  person Joram    schedule 13.06.2016
comment
Привет, Джорам, я отключил брандмауэр / прокси-сервер для своей машины. Все еще получаю ту же ошибку. Как вы думаете, есть ли какие-либо другие проблемы. Остальные вызовы работают нормально из клиента Postman. Только из приложения java, я получаю эту проблему   -  person Rajesh Kohir    schedule 22.06.2016


Ответы (3)


Такое поведение можно объяснить, если используемый HTTP-клиент открывает постоянные соединения. на сервер, и сервер иногда завершает их.

Обычно соединение с HTTP-сервером закрывается после каждого ответа. С помощью HTTP "keep-alive" базовое TCP-соединение остается открытым до тех пор, пока не будут выполнены определенные критерии. Каковы эти условия, зависит от сервера, который может закрыть соединение после произвольного тайм-аута или количества запросов (при условии, что он возвращает ответ на текущий запрос).

Когда сервер закрывает такое соединение, клиент обычно снова открывает его и, в зависимости от реализации, может выдать исключение или вывести предупреждение.

Например, Vert.x HttpClient (который по умолчанию открывает постоянные соединения) также выдает...

java.io.IOException: An existing connection was forcibly closed by the remote host

... когда сервер завершает их.

person curd0    schedule 03.11.2016

У меня была эта ошибка при использовании моего API с внешнего ПК, но при вызове с того же ПК все работало нормально.

Чтобы исправить это, я перешел в Панель управления
Щелкните правой кнопкой мыши значок Java. Перейдите на вкладку Дополнительно.

Затем установите флажок Включить ограниченную среду операционной системы «Применить и сохранить».

введите здесь описание изображения

Это решило мою проблему.

person Roberto Rodriguez    schedule 16.12.2020

Я столкнулся с той же проблемой на сервере Windows. Затем я проверил использование памяти сервера и обнаружил, что он занимает больше памяти, поэтому мое приложение не работает. У меня есть singoff какой-то профиль пользователя из

Диспетчер задач --> Вкладка "Пользователи" --> Щелкните правой кнопкой мыши и выйдите

Это решение сработало для меня.

person Manish Sharma    schedule 11.06.2021