Как заставить приложение Джерси распечатать журнал ошибок на сервере Tomcat - PullRequest
3 голосов
/ 05 марта 2020

В контексте Джерси 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 , что, очевидно, неожиданно

...