【发布时间】:2014-01-06 07:44:45
【问题描述】:
您好,我正在开发 Java 应用程序并部署在 Jboss,Windows 8 服务器上。在我的服务器代码中,我使用HttpUrlconnection 与我的产品进行通信。
我想为每个连接与我的产品连接设置一个时间限制。所以我使用HttpUrlconnection.setconnectionTimeout(30000) 30 秒的时间限制。但连接已在 9 分钟时被拒绝。 HttpUrlconnection.setconnectionTimeout() 目前不工作。
我发现了windows 8 server中TCP超时和重传限制设置的问题。默认情况下 TCP 重传限制为 2。尝试 2 次后,连接将被放弃或拒绝。
我的问题是如何在不更改 Windows 注册表文件的情况下从 java 端避免这个问题?这意味着可以设置超时或重试 TCP SYN/RST/ACK 机制以避免连接被拒绝问题。
有谁知道,请帮我解决这个问题
url = new URL(requestURL);
HttpURLConnection connection = (HttpURLConnection)
url.openConnection();
connection.setRequestMethod("GET");
connection.setUseCaches(false);
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setConnectTimeout(30000
connection.setReadTimeout(30000;
try {
// Get Response
inputStream = connection.getInputStream();
} catch (IOException e) {
//
}
异常如下
java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.<init>(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
【问题讨论】:
-
connection.setConnectTimeout(30000和connection.setReadTimeout(30000;是否只有错误?
标签: java sockets tcp httpurlconnection httpconnection