Устранение неполадок java.io.IOException: сервер вернул код ответа HTTP: 503 - PullRequest
0 голосов
/ 05 апреля 2019

Требуется помощь в устранении неполадок 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;
}
...