即使在responseservlet填满时响应为空

时间:2015-02-27 11:31:03

标签: java apache tomcat servlets

我使用jetty,本地tomcat和远程tomcat部署相同的战争。 对于同样的要求:

  • 对于码头和当地的tomcat,一切都很好,我得到了完整的答复。

  • 远程tomcat响应状态为200但空体。

我不知道在哪里看,为什么会有这种差异 如果您可以提供另一种方式来查询URL(可以是部署该应用程序的网络的公共或本地),我将很高兴听到它。
代码

private void get(String proxiedURIString, HttpServletResponse resp) throws IOException, ServletException {
    HttpURLConnection connection = getHttpURLConnection(proxiedURIString, resp);
    fillHeaders(resp, connection);
    try {
        IOUtils.copy(connection.getInputStream(), resp.getOutputStream());
    } catch (IOException e) {
        String message = String.format("Unable to parse response : %s", proxiedURIString);
        LOGGER.error(message);
        resp.sendError(500, message);
    } finally {
        resp.getOutputStream().flush();
        connection.disconnect();
    }
    LOGGER.info("Successfully proxied URI : {}", proxiedURIString);
}

private static void fillHeaders(HttpServletResponse resp, HttpURLConnection connection) {
    Map<String, List<String>> headers = connection.getHeaderFields();
    for (String header : headers.keySet()) {
        if(header == null || headers.get(header) == null) {
            continue;
        }
        for (String headerValue : headers.get(header)) {
            if(headerValue == null) {
                continue;
            }
            resp.addHeader(header, headerValue);
        }
    }
}

private static HttpURLConnection getHttpURLConnection(String proxiedURIString, HttpServletResponse resp) throws ServletException, IOException {
    HttpURLConnection connection = null;
    try {
        URL url = new URL(proxiedURIString);
        connection = (HttpURLConnection) url.openConnection();
    } catch (IOException e) {
        String message = String.format("Unable to contact : %s", proxiedURIString);
        LOGGER.error(message);
        resp.sendError(404, message);
    }
    return connection;
}

编辑:编辑代码以仅使用输入/输出流。另外,为了提供更多信息,我通过apache http服务器联系远程tomcat,响应体很大。

Edit2:更多信息。我将代理的URI映射为一个发送少得多的数据,这次我得到了每个配置的完整答案。

0 个答案:

没有答案