获取“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)

谁能帮我解决这个问题。

任何帮助是极大的赞赏。

原文由 Rajesh Kohir 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
1 个回答

如果您使用的 HTTP 客户端打开与服务器的 持久连接,并且服务器偶尔会终止它们,则可以解释这种行为。

通常,在每次响应后关闭与 HTTP 服务器的连接。使用 HTTP“ keep-alive ”,您可以保持底层 TCP 连接打开,直到满足特定条件。这些条件取决于服务器,它可以在任意超时或请求数量后自由关闭连接(只要它返回对当前请求的响应)。

当服务器关闭这样的连接时,客户端通常会再次打开它,并且根据实现的不同,可能会抛出异常或打印警告。

例如, Vert.x HttpClient (默认打开持久连接)也会抛出…

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

…当服务器终止它们时。

原文由 curd0 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏