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

StackOverflow https://stackoverflow.com/questions/1439503

  •  10-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь использовать 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 , который обеспечивает интеграцию с Джерси.

Есть идеи?

Это было полезно?

Решение

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

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);

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

Другие советы

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

((ServletAdapter) threadSelector.getAdapter()).addFilter()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top