当服务器在调用hessian时发生问题可能是套接字重置时,释放客户端将永远挂起

问题描述

| 我有一个客户通过Hessian呼叫服务器。在此期间,服务器不稳定,通常会出现套接字重置错误。和客户端挂在下面的日志。因此,如何释放此日志,但仍保持应用程序运行。而使客户端永远挂起的原因是什么?谢谢   在java.net.socketInputStream.socketRead0(本地方法)       在java.net.socketInputStream.read(未知来源)       在java.io.BufferedInputStream.fill(未知来源)       在java.io.BufferedInputStream.read1(未知来源)       在java.io.BufferedInputStream.read(未知来源)       -锁定<0x2159c988>(java.io.BufferedInputStream)       在sun.net.www.http.HttpClient.parseHTTPHeader(未知来源)       在sun.net.www.http.HttpClient.parseHTTP(未知来源)       在sun.net.www.http.HttpClient.parseHTTPHeader(未知来源)       在sun.net.www.http.HttpClient.parseHTTP(未知来源)       在sun.net.www.protocol.http.HttpURLConnection.getInputStream(未知源)     

解决方法

默认情况下,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\");