문제

저는 Grizzly를 사용하여 Jersey를 사용하여 개발 한 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);

내가 찾은 모든 예가 제안하는 것처럼 보입니다. 이것은 괜찮습니다. 서버가 시작하여 들어오는 요청을 내 리소스 클래스로 전달할 수 있습니다.

그러나 서비스 구현에는 서블릿 필터를 사용해야합니다. 그리즐리는 필터 및 기타 유사한 서블릿 관련 구성 옵션의 정의를 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