Java 重写getWriter(),服务器返回错误503(奇怪?)

Java 重写getWriter(),服务器返回错误503(奇怪?),java,servlets,servlet-filters,Java,Servlets,Servlet Filters,您好,我遵循此链接中的代码: 然而,服务器返回错误503,这真的很奇怪吗 这是我的代码: final CopyPrintWriter writer = new CopyPrintWriter(servletresponse.getWriter()); chain.doFilter(servletrequest, new MyResponseWrapper( (HttpServletResponse) servletresponse

您好,我遵循此链接中的代码:

然而,服务器返回错误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。同时从日志编写器返回一个空字符串?原因可能是什么


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

错误可能在您的
MyResponseWrapper
类中。

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

我不确定错误是否在包装器类中,因为它只是一个覆盖getOutputStream的包装器,在这里我使用TeeOutputStream来分支流并从那里记录它。servlet是一个返回“text/html”类型内容的servlet。