В контексте Джерси 2.25.1 очень простой REST API построен с простым JAXB POJO bean:
@XmlRootElement
public class Profile {
@XmlAttribute
private String name;
//setter and getter
}
и ресурс
public class ProfileResource {
@Path("/profile")
@Produce(MediaType.APPLICATION_XML)
public Profile getProfile() {
Profile p = new Profile();
p.setName("test");
return p;
}
}
, и он работает на сервере Tomcat .
Ошибка находится в профиле POJO - - так, чтобы при отправке http запроса на localhost:8080/contextroot/profile
я получил внутренняя ошибка ответ с STATUS 500 . Однако деталь ERROR не записывается в файл журнала по умолчанию на внутреннем сервере Tomcat . Для сравнения, с Spring framework все ошибки будут регистрироваться.
Согласно документации на Джерси , поддержка трассировки может быть разрешить d, установив jersey.config.server.tracing.type
в ALL
. Итак, я extends
jax.ws.rs.core.Application
следующим образом:
@ApplicationPath("contextroot")
public class ApplicationConfig extends Application {
@Override
public Map<String, Object> getProperties() {
Map<String,Object> properties = new HashMap<>();
properties.put(ServerProperties.TRACING, TracingConfig.ALL.toString());
System.out.println("Appliction is getting properties::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::");
return properties;
}
}
с зависимостью jaxrs-ri
в соответствии с Как настроить Приложение JAX-RS с использованием только аннотаций (без веб-доступа. * 1078) *) . Таким образом, этот класс действительно создается при запуске приложения на сервере Tomcat . Однако при отладке первой строки в классе org.glassfish.jersey.server.ServerRuntime.process(final ContainerRequest request)
, то есть TracingUtils.initTracingSupport(tracingConfig, tracingThreshold, request);
, значение свойства jersey.config.server.tracing.type
было обнаружено равным OFF
при отправке запроса, то есть ApplicationConfig
не является используется вообще .
Вопрос: Как включить поддержку трассировки приложения Jersey на сервере Tomcat
NOTE! Там это грубый ответ в Почему у Джерси нет журнала ошибок при статусе 500? Однако этот ответ превратит все ошибки во внутреннюю ошибку со статусом 500 , что, очевидно, неожиданно