Джерси, Guice, используя пути доступа без полномочий root

Я использую Jersey 1.11 поверх Guice 3.0 на Tomcat 6.0.32 в стандартной конфигурации:

configureServlets() {
    filter("/ws/*").through(GuiceContainer.class);
}

И простой класс ресурсов:

@Path("/resource")
public class Resource { ... }

Учитывая это, я бы предположил, что доступ к "/ws/resource" будет работать; но на самом деле никаких ресурсов не найдено. Кажется, проблема заключается в том, что путь запроса вычисляется неправильно. В качестве обходного пути я установил параметр PROPERTY_FILTER_CONTEXT_PATH в /ws, которые заставляют все это работать:

Map<String, String> jerseyConfig = new HashMap<String, String>();
jerseyConfig.put(ServletContainer.PROPERTY_FILTER_CONTEXT_PATH, "/ws");
filter("/ws/*").through(GuiceContainer.class, jerseyConfig);

Таким образом, мои вопросы:

  1. Это действительно ошибка или "фича"?
  2. Есть ли другое решение или обходной путь для этого?

Для информации, я видел одну ошибку Guice, которая может быть связана, кажется, она была объединена с другой, но мне интересно, если она исправлена ​​правильно ( ссылка)

1 ответ

Решение

Используйте подачу вместо фильтра.

configureServlets() {
    serve("/ws/*").with(GuiceContainer.class);
}

После этого вы сможете нажать /ws/resource.

Другие вопросы по тегам