【问题标题】:Overriding getWriter(), server returns error 503 (weird?)覆盖 getWriter(),服务器返回错误 503(奇怪?)
【发布时间】:2011-06-09 04:21:32
【问题描述】:

您好,我正在关注此链接中的代码:Capture and log the response body

但是服务器返回错误 503 真的很奇怪吗?

这是我的代码:

        final CopyPrintWriter writer = new CopyPrintWriter(servletresponse.getWriter());
        chain.doFilter(servletrequest, new MyResponseWrapper( 
                (HttpServletResponse) servletresponse){
                @Override
                public PrintWriter getWriter() {
                    return writer;
                }

        });
        log.debug("Test - " + writer.getCopy());
        writer.close();

在过滤器类中我添加了一些日志记录:

12:03:22,404         INFO MyFilter:43 - Before invoking chain
12:03:24,107        DEBUG MyFilter:59 - Test - 
12:03:24,108         INFO MyFilter:73 - After invoking chain

客户端从该代码收到 HTTP 错误 503。并且还从日志 writer.getCopy() 返回一个空字符串?可能是什么原因?

编辑:删除 CopyPrintWriter 相关代码并且不覆盖 getWriter(),服务器返回 OK 与 html。

【问题讨论】:

    标签: java servlets servlet-filters


    【解决方案1】:

    可能是因为您正在创建一个 writer,而在过滤器调用之后的 servlet 调用是通过从 HttpServletResponse.getOutputStream() 获取内容来将内容写入流。

    【讨论】:

    • servlet 是一个 servlet,它返回“text/html”类型的内容。
    【解决方案2】:

    错误可能在您的MyResponseWrapper 类中。

    【讨论】:

    • 我不确定错误是否在包装器类中,因为它只是一个覆盖 getOutputStream 的包装器,我使用 TeeOutputStream 来分支流并从那里记录它。
    猜你喜欢
    • 1970-01-01
    • 2011-02-25
    • 2014-12-12
    • 2023-03-17
    • 2014-02-19
    • 2012-04-23
    • 2012-12-17
    • 2017-12-31
    • 2019-02-10
    相关资源
    最近更新 更多