Domanda

Sto cercando di usare Grizzly per creare un server per eseguire un servizio REST che ho sviluppato usando Jersey. Sto creando il server Grizzly usando:

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

come tutti gli esempi che ho trovato sembrano suggerire. Questo va bene, il server si avvia ed è in grado di inoltrare richieste in arrivo alle mie classi di risorse.

Tuttavia, l'implementazione del servizio richiede l'utilizzo di un filtro servlet. Sembra che Grizzly supporti la definizione di filtri e altre simili opzioni di configurazione relative al servlet, tramite la classe ServletAdapter . Il mio problema è che non riesco a capire come definire un filtro quando uso un com.sun.jersey.api.container.grizzly.GrizzlyWebContainerFactory che fornisce l'integrazione con Jersey.

Qualche idea?

È stato utile?

Soluzione

Penso che potrei avere qualcosa per te ...

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

... funziona per me, spero che possa aiutarti anche tu.

Altri suggerimenti

Hai provato:

((ServletAdapter) threadSelector.getAdapter()).addFilter()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top