根据文档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);

最佳答案

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

关于java - 嵌入式Jetty + PostReplaceFilter的 Jersey ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8155271/

10-14 08:30