嗨,我正在開發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