12

我正在尝试使用 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 过滤器。Grizzly 似乎支持通过ServletAdapter类定义过滤器和其他类似的 servlet 相关配置选项。com.sun.jersey.api.container.grizzly.GrizzlyWebContainerFactory我的问题是,在使用提供 Jersey 集成的 a 时,我无法弄清楚如何定义过滤器。

有任何想法吗?

4

2 回答 2

8

我想我可能有东西给你...

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);

...它为我工作,我希望它也能帮助你。

于 2009-09-24T08:24:37.693 回答
1

你有没有尝试过:

((ServletAdapter) threadSelector.getAdapter()).addFilter()
于 2010-11-17T15:26:57.263 回答