0

我有一个客户端通过 Hessian 调用服务器。在此期间服务器不稳定,通常会出现 Socket 重置错误。客户端挂在下面的日志中。那么我怎样才能释放这个日志但仍然保持应用程序运行。使客户端永远挂起的原因是什么?谢谢

在 java.net.SocketInputStream.socketRead0(Native Method) 在 java.net.SocketInputStream.read(Unknown Source) 在 java.io.BufferedInputStream.fill(Unknown Source) 在 java.io.BufferedInputStream.read1(Unknown Source) 在 java .io.BufferedInputStream.read(Unknown Source) - 在 sun.net.www.http.HttpClient 的 sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source) 处锁定 <0x2159c988> (一个 java.io.BufferedInputStream)。 parseHTTP(Unknown Source) at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source) at sun.net.www.http.HttpClient.parseHTTP(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection。 getInputStream(未知来源)

4

1 回答 1

1

默认情况下 HttpUrlConnection 没有超时。您需要为此设置 java 系统属性:

http://docs.oracle.com/javase/7/docs/technotes/guides/net/properties.html

sun.net.client.defaultConnectTimeout (default: -1)
sun.net.client.defaultReadTimeout (default: -1)

从命令行设置它:

-Dsun.net.client.defaultReadTimeout=30000 -Dsun.net.client.defaultConnectTimeout=30000

或来自 Java 代码:

System.setProperty("sun.net.client.defaultReadTimeout", "30000");
System.setProperty("sun.net.client.defaultConnectTimeout", "30000");
于 2016-04-08T11:16:23.053 回答