Как мне получить 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));
}
}