Jersey filters in a container without servlets

I am running a jersey in a container without servlets (Netty). For servlet-based containers, I can hook up a query filter using:

<init-param> <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name> <param-value>com.sun.jersey.api.container.filter.GZIPContentEncodingFilter</param-value> </init-param> 

But how to do this programmatically in my case?

0
rest jersey
source share
2 answers

Here is a complete example without a servlet: Assuming you have created your request and / or response filter, you can add them to the startup code as follows: (Note that the ApiInterceptor class is both a request and a response filter in this example)

  final URI BASE_URI = UriBuilder.fromUri("http://localhost/").port(9999).build(); System.out.println("Investigating Api services..."); ResourceConfig rc = new PackagesResourceConfig( "path.to.your.resource.objects"); System.out.println("Registering interceptors..."); rc.getProperties().put(ResourceConfig.PROPERTY_CONTAINER_REQUEST_FILTERS, ApiInterceptor.class.getName()); rc.getProperties().put(ResourceConfig.PROPERTY_CONTAINER_RESPONSE_FILTERS, ApiInterceptor.class.getName()); Debug.print("Starting grizzly..."); GrizzlyServerFactory.createHttpServer(BASE_URI, rc); Debug.print("The app started @", BASE_URI.toString()); Debug.print("Enjoy!"); System.in.read(); 
+1
source share

Not sure about Netty, but for Grizzly him:

  ..... webServer = new GrizzlyWebServer(getPort(8080), ".", true); // add Jersey resource servlet ServletAdapter jerseyAdapter = new ServletAdapter(); jerseyAdapter.addInitParameter("com.sun.jersey.config.property.packages", "com.your.resources.package"); jerseyAdapter.setContextPath("/"); jerseyAdapter.setServletInstance(new ServletContainer()); // add the Container filter jerseyAdapter.addInitParameter(ResourceConfig.PROPERTY_CONTAINER_REQUEST_FILTERS, GZIPContentEncodingFilter.class.getName()); webServer.addGrizzlyAdapter(jerseyAdapter, new String[]{"/"}); try { // start Grizzly embedded server // System.out.println(String.format("Jersey app started with WADL at %sapplication.wadl", BASE_URI)); webServer.start(); } catch (Exception ex) { System.out.println(ex.getMessage()); } 
0
source share

All Articles