获取" java.io.IOException:远程主机"强制关闭现有连接。

时间:2016-06-13 10:32:45

标签: java rest ibm-bpm

我正在休息调用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)

任何人都可以帮我解决这个问题。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:8)

如果您使用的HTTP客户端向服务器打开 persistent connections ,并且服务器偶尔会终止它们,则可以解释此类行为。

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

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

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

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

...当服务器终止它们时。

答案 1 :(得分:0)

从外部PC上使用我的API时出现此错误,但是从同一台PC上调用时,它运行正常。

要解决此问题,我去了控制面板
右键单击 Java 图标 转到高级标签

然后检查启用操作系统的受限环境 申请并保存

enter image description here

这解决了我的问题。

答案 2 :(得分:0)

我在 Windows 服务器上遇到了同样的问题。 然后我检查了服务器的内存利用率,它占用了更多内存,所以我的应用程序没有运行。 我从

中注销了一些用户个人资料 <块引用>

任务管理器-->用户选项卡-->右键单击并注销

这个解决方案对我有用。