2009-09-17 7 views
12

J'essaie d'utiliser Grizzly pour créer un serveur pour exécuter un service REST que j'ai développé en utilisant Jersey. Je crée le serveur Grizzly en utilisant:Utilisation de filtres avec le serveur Grizzly exécutant un service 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); 

comme tous les exemples que j'ai trouvé semblent suggérer. C'est bien, le serveur démarre et est capable de transférer les demandes entrantes à mes classes de ressources. Toutefois, l'implémentation du service nécessite l'utilisation d'un filtre de servlet. Il semble que Grizzly prenne en charge la définition de filtres et d'autres options de configuration similaires aux servlets, via la classe ServletAdapter. Mon problème est que je ne peux pas définir comment définir un filtre lorsque j'utilise un com.sun.jersey.api.container.grizzly.GrizzlyWebContainerFactory qui fournit l'intégration de Jersey.

Des idées?

+0

incroyable, j'étais sur le point de poser exactement la même question. Faites-moi savoir si apprendre quelque chose. Je ferai de même. – ra9r

Répondre

8

Je pense que je pourrais avoir quelque chose pour vous ...

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

... son travail pour moi, je l'espère vous aide aussi bien.

+1

Merci! C'est exactement ce dont j'ai besoin. – Andy

+0

Comment ajouter un contexte de servlet à ce schéma de sorte que vous puissiez injecter via @Context des choses comme HttpServletRequest dans vos objets de ressources? – ae6rt

1

Avez-vous essayé:

((ServletAdapter) threadSelector.getAdapter()).addFilter() 
Questions connexes