web-dev-qa-db-ja.com

「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)

誰でもこの問題を解決する方法について私を助けることができます。

どんな助けも大歓迎です。

8
Rajesh Kohir

このような動作は、使用するHTTPクライアントがサーバーに対して永続的な接続を開き、サーバーが時々それらを終了する場合に説明できます。

通常、HTTPサーバーへの接続は各応答後に閉じられます。 HTTP "keep-alive"を使用すると、特定の条件が満たされるまで、基礎となるTCP接続を開いたままにします。は、サーバーに依存します。サーバーは、任意のタイムアウトまたは要求の数(接続が現在の要求に応答を返す限り)の後に接続を自由に閉じることができます。

サーバーがそのような接続を閉じると、クライアントは通常再度接続を開き、実装によっては例外をスローしたり、警告を出力したりします。

たとえば、Vert.xHttpClient (デフォルトで永続的な接続を開く)もスローします...

Java.io.IOException: An existing connection was forcibly closed by the remote Host

...サーバーがそれらを終了するとき。

9
curd0