【发布时间】:2015-04-08 09:37:50
【问题描述】:
我在 SE6 版本上运行服务器客户端 Java 应用程序。服务器和客户端之间的消息传递是通过 http 协议进行的。通常,此应用程序运行良好,但最近我开始在客户端日志上看到一些“连接重置”错误。我认为这可能是因为保持活动状态并禁用它,但错误仍然存在。这是客户端错误日志。
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:208)
at java.net.SocketInputStream.read(SocketInputStream.java:134)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:247)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:287)
at java.io.BufferedInputStream.read(BufferedInputStream.java:346)
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:717)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:663)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1336)
at cb.smg.general.utility.ESIHttpCaller.executePost(ESIHttpCaller.java:43)
我知道服务器端有问题,如果工作线程池已满,则套接字在服务器端和客户端没有适当的 http 代码就关闭了,我们会得到 java.net.SocketException: Unexpected end of file from server。卜那应该是非常罕见的。 我的第一个问题可能是这个错误(连接重置)是因为应用程序之外的一些更改(例如操作系统修复。) 其次,处理此异常的最佳方法是什么,目前我只是在 finally 块中调用以下方法。
HttpURLConnection.disconnect()
【问题讨论】:
-
我看到了这个问题,但因为它与 apache http 客户端有关。我想可能是我的问题与 HTTPUrlconnection 有关。
-
啊,是的,我现在明白了。已收回。
标签: java sockets httpurlconnection