Джерси, 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);
Таким образом, мои вопросы:
- Это действительно ошибка или "фича"?
- Есть ли другое решение или обходной путь для этого?
Для информации, я видел одну ошибку Guice, которая может быть связана, кажется, она была объединена с другой, но мне интересно, если она исправлена правильно ( ссылка)
1 ответ
Решение
Используйте подачу вместо фильтра.
configureServlets() {
serve("/ws/*").with(GuiceContainer.class);
}
После этого вы сможете нажать /ws/resource.