Джерси со встроенным Jetty + PostReplaceFilter - PullRequest
2 голосов
/ 16 ноября 2011

Я использую Джерси со встроенной пристанью в соответствии с документацией http://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jetty. Пока все работает нормально. Теперь я хотел бы добавить использование PostReplaceFilter в этой конфигурации.

Обычно это делается в файле web.xml следующим образом

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

Но при использовании встроенной Jetty у меня нет web.xml. Я попытался установить фильтр программно, как это

    ServletContextHandler sch = new ServletContextHandler(server, "myapp");

    sch.setInitParameter("com.sun.jersey.spi.container.ContainerRequestFilters", "com.sun.jersey.api.container.filter.PostReplaceFilter");

Но это не показывает никакого эффекта. Может кто-нибудь пролить свет на то, как установить PostReplaceFilter с использованием кода Java?

Заранее спасибо


Похоже, я упустил упомянуть один важный факт: я использую Google Guice. Поэтому нет ServletHolder, где я мог бы установить параметры инициализации. Вместо этого я наконец смог найти ответ в документации Guice по номеру http://code.google.com/p/google-guice/wiki/ServletRegexKeyMapping в разделе «Параметры инициализации». Так что для PostReplaceFilter это будет выглядеть так:

 Map<String, String> params = new HashMap<String, String>();                
 params.put("com.sun.jersey.spi.container.ContainerRequestFilters", "com.sun.jersey.api.container.filter.PostReplaceFilter");
 serve("/*").with(GuiceContainer.class, params);

1 Ответ

1 голос
/ 17 ноября 2011

Вы должны установить его с помощью setInitParameter () в экземпляре ServletHolder, который вы используете для регистрации сервлета Джерси.

...