首页 > 解决方案 > java.io.IOException 疑难解答:服务器返回 HTTP 响应代码:503

问题描述

在排除 java.io.IOException 时需要帮助:服务器返回 HTTP 响应代码:503

部署在 JBoss EAP 6.3(客户端应用程序)上的 Web 应用程序创建到另一个部署在 GlassFish 服务器(服务器应用程序)上的应用程序的 HttpURLConnection。这两个服务器之间有防火墙。客户端应用程序在成功运行近一两天后突然开始抛出 java.io.IOException: Server returned HTTP response code: 503 for all requests 。

1.) 根据 GlassFish 服务器管理员的说法,没有进一步的请求进入服务器进行处理。虽然,我要求提供 HTTP 访问日志,但不确定 GlassFish 是否在访问日志中记录了 503 响应。2.) 防火墙日志表明这两台服务器之间没有阻止流量。3.) 网络管理员建议wireshark 无法捕获任何给出503 响应的出站流量。

我的查询是:

每个创建的连接都使用 connection.disconnect() 方法,并且连接的创建非常频繁。很少有链接表明 disconnect() 方法不允许相同的 TCP 套接字被其他请求重用,在这种情况下,每次都会创建一个新的套接字。所以最好关闭 InputStream。底层Windows操作系统动态端口分配失败会导致HTTP Response 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;
}

标签: javahttpurlconnectionhttp-status-code-503

解决方案


推荐阅读