Требуется помощь в устранении неполадок java.io.IOException: сервер вернул код ответа HTTP: 503
Веб-приложение, развернутое на JBoss EAP 6.3 (клиентское приложение), создает HttpURLConnection с другим приложением, развернутым на сервере GlassFish (серверное приложение). Между этими двумя серверами установлен межсетевой экран. Клиентское приложение неожиданно начинает выдавать java.io.IOException: сервер вернул код ответа HTTP: 503 для всех запросов после успешного выполнения в течение почти дня или двух.
1.) По словам администратора сервера GlassFish, дальнейшие запросы на сервер для обработки не поступают. Тем не менее, я запросил журналы HTTP-доступа, но не уверен, зарегистрировано ли 503 ответа GlassFish в журналах доступа.
2.) Журналы брандмауэра предполагают отсутствие заблокированного трафика между этими двумя серверами.
3.) Администратор сети предполагает, что wireshark не может перехватить исходящий трафик, который дает ответ 503.
Мой запрос:
Метод connection.disconnect () используется для каждого созданного соединения, и соединения создаются очень часто. В нескольких ссылках говорится, что метод disconnect () не позволяет повторно использовать один и тот же сокет TCP другими запросами, и в этом случае каждый раз будет создаваться новый сокет. Поэтому лучше вместо этого закрыть InputStream. Может ли сбой в динамическом распределении портов базовой операционной системой Windows привести к ответу HTTP 503?
try {
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Content-Type", "application/json");
connection.setDoOutput(true);
if (connection.getResponseCode()!= 200) {
serviceStatus = code;
serviceMsg = "Error occurred while getting data";
}
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String outStr = "";
while ((outStr = br.readLine()) != null) {
System.out.println("OutS " + outStr);
sessionKey += outStr;
}
connection.disconnect();
} catch (Exception ex) {
serviceStatus = -1;
serviceMsg = "Error: " + ex.getMessage();
ex.printStackTrace();
}
return sessionKey;
}