Переопределяя getWriter (), сервер возвращает ошибку 503 (странно?) - PullRequest
0 голосов
/ 09 июня 2011

Привет! Я следую за кодом по этой ссылке: Захват и запись тела ответа

Однако ошибка возврата сервера 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.

Ответы [ 2 ]

0 голосов
/ 09 июня 2011

Может быть потому, что вы создаете модуль записи, тогда как вызов сервлета после вызова фильтра записывает содержимое в поток, получая его из HttpServletResponse.getOutputStream ().

0 голосов
/ 09 июня 2011

Ошибка, вероятно, в вашем MyResponseWrapper классе.

...