Как мне получить Jersey 2.2 (JAX-RS) для генерации вывода журнала, включая тела запросов Json

Я использую сервлет Jersey 2.2 в Jetty 9.0.4 для обслуживания запросов REST.

В основном все хорошо и запросы обслуживаются, но я никогда не виделЛЮБЫЕ бревно из Джерси классов. И я не могу найти никакого документа, указывающего, каких цыплят мне нужно пожертвовать, чтобы это произошло с Джерси 2.2

Итак, мой первый вопрос - что мне нужно сделать, чтобы Джерси сгенерировал какой-то журнал.

Когда запрос выполняется неправильно (например, из-за того, что тело запроса Json не может быть проанализировано), Джерси выдает исключение ContainerException с сообщением типа «Не удается десериализовать экземпляр java.util.ArrayList из токена START_OBJECT» и т. Д. бытьдействительно приятно, что я зарегистрировал тело входящего запроса, чтобы я мог проверить Json. Опять же, я не могу найти ничего в текущем документе, описывающем такого зверя, хотя я уверен, что есть один. И в любом случае, пока я не решу вопрос 1 выше, это спорный вопрос.

Поэтому мой второй вопрос - как мне зарегистрировать тело входящего запроса (не прерывая запрос).

Конфигурация сервлета Джерси в web.xml выглядит следующим образом:

<servlet >
    <servlet-name>Jersey Servlet</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>au.com.xandar.wirelesstiming.recorder.web.rest.JerseyApplication</param-value>
    </init-param>
    <init-param>
        <param-name>jersey.config.server.provider.classnames</param-name>
        <param-value>org.glassfish.jersey.filter.LoggingFilter</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

Мой JerseyApplication является:

public final class JerseyApplication extends ResourceConfig {

    public JerseyApplication() {
        super(
            //JacksonFeature.class   // Switching on Jackson
            // (My) JerseyLoggingFilter.class       // Log requests using Jersey ContainerRequestFilter 
            MyApplicationEventListener.class        // Log Requests using Jersey RequestEventListener
        );
        packages("au.com.xandar.wirelesstiming.recorder");

        // Enable LoggingFilter & output entity.
        // NB This does NOT generate any log.
        registerInstances(new LoggingFilter(Logger.getLogger(JerseyApplication.class.getName()), true));
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос