2009-09-17 1 views
12

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

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

Любые идеи?

+0

Удивительно, я как раз собирался спросить точно такой же вопрос. Дайте мне знать, если узнаете что-нибудь. Я сделаю то же самое. – ra9r

ответ

8

Я думаю, что я мог бы что-нибудь для вас ...

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

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

+1

Спасибо! Это именно то, что мне нужно. – Andy

+0

Как вы добавляете контекст сервлета к этой схеме, чтобы вы могли вводить через объекты @Context, такие как HttpServletRequest, в свои объекты ресурса? – ae6rt

1

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

((ServletAdapter) threadSelector.getAdapter()).addFilter() 
Смежные вопросы