2009-09-17 4 views
12

Ich versuche mit Grizzly einen Server zu erstellen, um einen REST-Dienst auszuführen, den ich mit Jersey entwickelt habe. Ich erstelle den Grizzly-Server unter Verwendung von:Verwenden von Filtern mit Grizzly-Server, auf denen ein Jersey-REST-Dienst ausgeführt wird

wie alle Beispiele, die ich gefunden habe, scheinen zu suggerieren. Dies ist in Ordnung, der Server startet und kann eingehende Anfragen an meine Ressourcenklassen weiterleiten.

Die Service-Implementierung erfordert jedoch die Verwendung eines Servlet-Filters. Es scheint, dass Grizzly die Definition von Filtern und anderen ähnlichen servletbezogenen Konfigurationsoptionen über die Klasse ServletAdapter unterstützt. Mein Problem ist, dass ich nicht herausfinden kann, wie man einen Filter definiert, wenn man com.sun.jersey.api.container.grizzly.GrizzlyWebContainerFactory benutzt, das Jersey-Integration zur Verfügung stellt.

Irgendwelche Ideen?

+0

Erstaunlich, ich war fast genau die gleiche Frage zu stellen. Lass es mich wissen, wenn ich etwas lerne. Ich werde das selbe machen. – ra9r

Antwort

8

glaube ich etwas für Sie haben könnte ...

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

... seine Arbeits für mich, ich hoffe, dass es Ihnen so gut hilft.

+1

Vielen Dank! Das ist genau das, was ich brauche. – Andy

+0

Wie fügen Sie einen Servlet-Kontext zu diesem Schema hinzu, so dass Sie über @Context Dinge wie HttpServletRequest in Ihre Ressourcenobjekte injizieren können? – ae6rt

1

Haben Sie versucht:

((ServletAdapter) threadSelector.getAdapter()).addFilter() 
Verwandte Themen