泽西与嵌入式Jetty + PostReplaceFilter

时间:2011-11-16 16:38:03

标签: java jetty jersey

我根据文档http://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jetty使用Jersey和嵌入式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");

但这并没有显示任何效果。任何人都可以了解如何使用Java代码安装PostReplaceFilter吗?

提前致谢


我好像错过了一个重要的事实,那就是我正在使用Google Guice。因此,没有ServletHolder,我可以在其中设置初始化参数。相反,我终于可以在http://code.google.com/p/google-guice/wiki/ServletRegexKeyMapping的Guice文档中的“初始化参数”部分找到答案。所以对于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 个答案:

答案 0 :(得分:1)

您应该使用用于注册Jersey servlet的ServletHolder实例上的setInitParameter()来设置它。