代码之家  ›  专栏  ›  技术社区  ›  Andy

在运行Jersey Rest服务的灰熊服务器上使用过滤器

  •  12
  • Andy  · 技术社区  · 15 年前

    我尝试使用grizzly创建一个服务器来运行我使用Jersey开发的REST服务。我正在创建灰熊服务器,使用:

    final String baseUri = "http://localhost:9998/";
    final Map<String, String> initParams = new HashMap<String, String>();
    initParams.put("com.sun.jersey.config.property.packages", "me.my.rest.package");
    SelectorThread threadSelector = 
      GrizzlyWebContainerFactory.create(baseUri, initParams);
    

    正如我发现的所有例子所表明的那样。这很好,服务器启动并能够将传入的请求转发到我的资源类。

    但是,服务实现要求它使用servlet过滤器。灰熊似乎支持过滤器的定义和其他类似的servlet相关配置选项,通过 ServletAdapter 班级。我的问题是,当使用 com.sun.jersey.api.container.grizzly.GrizzlyWebContainerFactory 提供泽西岛一体化。

    有什么想法吗?

    2 回复  |  直到 12 年前
        1
  •  8
  •   ra9r    15 年前

    我想我可能有东西给你…

    GrizzlyWebServer ws = new GrizzlyWebServer(9999);
    ServletAdapter jerseyServletAdapter = new ServletAdapter();
    jerseyServletAdapter.setServletInstance(new ServletContainer());
    jerseyServletAdapter.addInitParameter(
        "com.sun.jersey.config.property.packages", "me.my.rest.package");
    jerseyServletAdapter.setServletPath("/api");
    
    // HERE IS HOW YOU ADD A FILTER 
    jerseyServletAdapter.addFilter(new MyFilter(), "HibernateSessionFilter", null);
    
    ws.addGrizzlyAdapter(jerseyServletAdapter, null);
    

    …它对我有用,我希望它也能帮助你。

        2
  •  1
  •   Alex Kamburov    14 年前

    你试过了吗?

    ((ServletAdapter) threadSelector.getAdapter()).addFilter()