嗨,我正在开发Java应用程序并部署在Jboss
,Windows 8服务器上。在我的服务器代码中,我使用HttpUrlconnection
与我的产品进行通信。由于连接拒绝,Java HttpUrlConnection连接超时不工作
我想为evey连接设置一个时间限制来连接我的产品。所以我使用HttpUrlconnection.setconnectionTimeout(30000)
30秒的时间限制。但在9分钟时连接被拒绝。 HttpUrlconnection.setconnectionTimeout()
目前无法使用。
我已经发现TCP超时发生的问题,并已在Windows 8服务器中设置了重传限制。默认情况下,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;'这里只有错误吗?' – ChiefTwoPencils