Джерси фильтры в контейнере без сервлетов - PullRequest
0 голосов
/ 16 мая 2011

Я использую Джерси в контейнере без сервлетов (Netty). Для контейнеров на основе сервлетов я могу подключить фильтр запросов, используя:

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

Но как мне сделать это программно в моем случае?

Ответы [ 2 ]

1 голос
/ 16 апреля 2012

Вот совершенно не сервлетный пример: Предполагая, что вы создали свой фильтр запросов и / или ответов, вы можете добавить их в свой код запуска следующим образом: (Обратите внимание, что класс 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();
0 голосов
/ 29 августа 2011

Не уверен насчет Нетти, но для Гризли это:

    .....

    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());
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...