Pregunta

Estoy tratando de usar Grizzly para crear un servidor para ejecutar un servicio REST que desarrollé con Jersey. Estoy creando el servidor 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);

como todos los ejemplos que he encontrado parecen sugerir. Esto está bien, el servidor se inicia y puede reenviar las solicitudes entrantes a mis clases de recursos.

Sin embargo, la implementación del servicio requiere que use un filtro de servlet. Parece que Grizzly admite la definición de filtros y otras opciones de configuración similares relacionadas con servlets, a través de la clase ServletAdapter . Mi problema es que no puedo resolver cómo definir un filtro cuando uso un com.sun.jersey.api.container.grizzly.GrizzlyWebContainerFactory que proporciona la integración de Jersey.

¿Alguna idea?

¿Fue útil?

Solución

Creo que podría tener algo para ti ...

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

... está funcionando para mí, espero que también te ayude.

Otros consejos

¿Has probado:

((ServletAdapter) threadSelector.getAdapter()).addFilter()
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top