2011-05-16 24 views
0

我在非servlet容器(Netty)中運行Jersey。對於基於servlet的容器​​,我可以用一個請求濾棒:非servlet容器中的澤西過濾器

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

但我怎麼在我的情況下做到這一點編程?

回答

0

不確定的Netty,但對於灰熊的:

..... 

    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()); 
    } 
1

這裏是一個完全非servlet的例子: 假設你已經創建了您的請求和/或響應濾波器(S),你可以將它們添加你的啓動代碼如下: (請注意ApiInterceptor類既是一個請求,在這個例子中的響應過濾器)

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(); 
相關問題