覆盖getWriter(),服务器返回错误503(很奇怪?)

时间:2011-06-09 04:21:33

标签: java servlets servlet-filters

您好我正在关注此链接中的代码: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(),服务器使用html返回OK。

2 个答案:

答案 0 :(得分:0)

错误可能在您的MyResponseWrapper班级。

答案 1 :(得分:0)

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