2009-09-17 3 views
12

저지를 사용하여 개발 한 REST 서비스를 실행하기 위해 Grizzly를 사용하여 서버를 만들려고합니다. 내가 찾은 모든 예제로저지 REST 서비스를 실행하는 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 클래스를 통해 필터 및 기타 유사한 서블릿 관련 구성 옵션의 정의를 지원합니다. 내 문제는 Jersey 통합을 제공하는 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

HttpServletRequest와 같은 @Context를 통해 리소스 객체에 주입 할 수 있도록이 구성표에 서블릿 컨텍스트를 어떻게 추가합니까? – ae6rt

1

은 당신이 봤어 :

((ServletAdapter) threadSelector.getAdapter()).addFilter() 
관련 문제