#java #spring #spring-mvc #servlet-filters #xstream
#java #весна #spring-mvc #сервлет-фильтры #xstream
Вопрос:
У меня есть служба Spring MVC REST, которая использует XStream для преобразования сообщений в XML и из него.
Могу ли я каким-либо образом распечатать xml (т. Е. Тело) из запроса и ответа на обычный log4j logger?
Внутри контроллера не будет работать, потому что к тому времени XStream уже прочитал отмененный запрос и еще не отправил ответ.
Фильтр в сервлете тоже не очень хорош, поскольку он будет потреблять тело, читая его.
И вот тут у меня заканчиваются идеи if. Итак, ИТАК? Есть желающие? 🙂
Ответ №1:
Вы можете использовать перехватчик для регистрации содержимого вашего запроса и ответа, поступающего в ваш конкретный rest uri — подробнее здесь
Комментарии:
1. Я попробую еще завтра, но разве запрос / ответ не просто передается внутри? Если это так, я не могу их прочитать, не уничтожив их.
2. Вы правы @Andreas, перехватчик не будет работать. Я вижу здесь один метод — wetfeetblog.com /… , который потребляет поток, но затем заменяет HttpRequest и HttpResponse адаптированной версией, при этом запрос и ответ внутренне буферизуются.
3. Да, я видел такие решения. Spring даже имеет это внутренне в своем AbstractRequestLoggingFilter, хотя я думаю, что это плохая и ошибочная реализация.
4. Я награждаю за это решение. Моей единственной реальной идеей было сделать так, как это делает wetfeetblog, но я не нашел эту ссылку, и я боюсь, что не получу лучшего решения.