Jersey v1 Spring Boot change jersey root Путь к открытию конечных точек привода

начиная с примера dsyer: https://github.com/dsyer/spring-boot-jersey/tree/master/spring-boot-sample-jersey1

Чтобы повторить попытку, я использую Jersey v1, а не v2.

Я заметил, что трикотаж закрывает конечные точки пружинного ботинка и исполнительного механизма, такие как / env и / health. Я следил за Spring Boot Jersey и URL-адресами мониторинга, чтобы успешно повторно выставить конечные точки пружинной загрузки. Теперь Джерси игнорирует все, кроме /hello/**, чего я хочу, но мне также пришлось изменить Path в моем контроллере на @Path("/hello")

Я хочу, чтобы код моего контроллера оставался @Path("/") и просто изменил корень приложения jersey на /hello. Я полагаю, что могу сделать это с помощью аннотации @ApplicationPath("/hello"), но я не могу понять, где разместить / настроить это, используя Jersey v1 и Spring Boot. (все примеры, которые я, кажется, нахожу, используют ResourceConfig из Джерси 2, который Джерси 1, похоже, не имеет такой же реализации)

Любые идеи?


person stevoblevo    schedule 01.12.2015    source источник
comment
честно говоря, у меня даже нет любого ResourceConfig в коде, что является одной из причин, по которой я не знаю, где разместить эту @ApplicationPath аннотацию   -  person stevoblevo    schedule 02.12.2015


Ответы (1)


Итак, на основе примера, с которым вы связались (и после добавления мониторинга исполнительного механизма), я смог заставить конечные точки работать следующими способами

  1. Оставьте все как есть, за исключением установки параметра инициализации для фильтра Джерси

    FilterRegistrationBean bean = new FilterRegistrationBean();
    ...           
    bean.addInitParameter("com.sun.jersey.config.feature.FilterForwardOn404", "true");
    

    Это делает так, что даже с сопоставлением /* по умолчанию, когда Джерси не находит конечные точки мониторинга (чего не должно быть), он перенаправляет запрос обратно в контейнер сервлета и находит конечные точки.

  2. В вашем сообщении кажется, что вы пытались изменить URL-адрес, чтобы обойти «затенение» URL-адресов мониторинга. Но приведенное выше устраняет эту проблему без необходимости изменять путь. Но если вы все же действительно хотели изменить путь, это решение, которое я смог придумать.

    Кажется, что попытка добавить сопоставление в фильтр приводит к тому поведению, которое вы испытываете. Чтобы обойти это, вместо регистрации Джерси в качестве фильтра я зарегистрировался как сервлет. Обратите внимание, что предыдущее решение работает только как фильтр. Но здесь мы воспользуемся сервлетом для изменения сопоставления URL-адресов.

    @Bean
    public ServletRegistrationBean jerseyServlet() {
        ServletRegistrationBean bean = new ServletRegistrationBean();
        bean.setServlet(new ServletContainer());
        bean.addInitParameter("com.sun.jersey.config.property.packages",
                              "com.sun.jersey;demo");
        bean.addUrlMappings("/api/*");
        return bean;
    }
    

Я предполагаю, что должна быть какая-то комбинация ResourceConfig/@ApplicationPath, которая должна работать, но с тестированием, которое я провел, я еще не нашел ее. Я могу обновить этот пост позже, если смогу разобраться.

person Paul Samsotha    schedule 02.12.2015