Подтвердить что ты не робот

Использование фильтров с сервером Grizzly с использованием службы REST Джерси

Я пытаюсь использовать Grizzly для создания сервера для запуска службы REST, которую я разработал с использованием Jersey. Я создаю сервер Grizzly, используя:

final String baseUri = "http://localhost:9998/";
final Map<String, String> initParams = new HashMap<String, String>();
initParams.put("com.sun.jersey.config.property.packages", "me.my.rest.package");
SelectorThread threadSelector = 
  GrizzlyWebContainerFactory.create(baseUri, initParams);

поскольку все приведенные мной примеры, похоже, предлагают. Это нормально, сервер запускается и может перенаправлять входящие запросы в мои классы ресурсов.

Однако для реализации службы требуется использовать фильтр сервлета. Похоже, что Grizzly поддерживает определение фильтров и других аналогичных параметров конфигурации, связанных с сервлетом, через класс ServletAdapter. Моя проблема в том, что я не могу определить, как определить фильтр при использовании com.sun.jersey.api.container.grizzly.GrizzlyWebContainerFactory, который обеспечивает интеграцию с Джерси.

Любые идеи?

4b9b3361

Ответ 1

Думаю, у меня может быть что-то для вас...

GrizzlyWebServer ws = new GrizzlyWebServer(9999);
ServletAdapter jerseyServletAdapter = new ServletAdapter();
jerseyServletAdapter.setServletInstance(new ServletContainer());
jerseyServletAdapter.addInitParameter(
    "com.sun.jersey.config.property.packages", "me.my.rest.package");
jerseyServletAdapter.setServletPath("/api");

// HERE IS HOW YOU ADD A FILTER 
jerseyServletAdapter.addFilter(new MyFilter(), "HibernateSessionFilter", null);

ws.addGrizzlyAdapter(jerseyServletAdapter, null);

... он работает для меня, я надеюсь, что это вам тоже поможет.

Ответ 2

Вы пробовали:

((ServletAdapter) threadSelector.getAdapter()).addFilter()