Servlets 对运行Jersey REST服务的Grizzly服务器使用过滤器

Servlets 对运行Jersey REST服务的Grizzly服务器使用过滤器,servlets,jersey,grizzly,Servlets,Jersey,Grizzly,我试图使用Grizzly创建一个服务器来运行我使用Jersey开发的REST服务。我正在使用以下方法创建Grizzly服务器: final String baseUri = "http://localhost:9998/"; final Map<String, String> initParams = new HashMap<String, String>(); initParams.put("com.sun.jersey.config.property.packages

我试图使用Grizzly创建一个服务器来运行我使用Jersey开发的REST服务。我正在使用以下方法创建Grizzly服务器:

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);
最终字符串baseUri=”http://localhost:9998/";
final Map initParams=new HashMap();
initParams.put(“com.sun.jersey.config.property.packages”、“me.my.rest.package”);
SelectorRead线程选择器=
create(baseUri,initParams);
我发现的所有例子似乎都表明了这一点。这很好,服务器启动并能够将传入的请求转发到我的资源类

但是,服务实现要求它使用servlet过滤器。Grizzly似乎通过
ServletAdapter
类支持过滤器的定义和其他类似的与servlet相关的配置选项。我的问题是,在使用提供jersey集成的
com.sun.jersey.api.container.grizzly.GrizzlyWebContainerFactory
时,我无法确定如何定义过滤器


有什么想法吗?

我想我可能有东西给你

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);
。。。它对我有用,我希望它也能帮助你。

你试过:

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

令人惊讶的是,我正要问完全相同的问题。如果你学到了什么,请告诉我。我也会的,谢谢你!这正是我所需要的。如何将servlet上下文添加到此方案中,以便可以通过@context将HttpServletRequest之类的东西注入到资源对象中?