在运行 Jersey REST 服务的 Grizzly 服务器上使用过滤器

发布于 2024-08-05 05:31:43 字数 675 浏览 7 评论 0原文

我正在尝试使用 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);

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

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

有什么想法吗?

I'm trying to use Grizzly to create a server to run a REST service that I've developed using Jersey. I'm creating the Grizzly server using:

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

as all the examples I've found seem to suggest. This is fine, the server starts and is able to forward incoming requests to my resource classes.

However, the service implementation requires it to use a servlet filter. It appears that Grizzly supports the definition of filters and other similar servlet related configuration options, via the ServletAdapter class. My problem is that I can't work out how to define a filter when using a com.sun.jersey.api.container.grizzly.GrizzlyWebContainerFactory which provides Jersey integration.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不再让梦枯萎 2024-08-12 05:31:43

我想我可能会给你一些东西......

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

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

I think I might have something for you ...

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

... its working for me, I hope it helps you as well.

纵情客 2024-08-12 05:31:43

你有没有尝试过:

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

Have you tried:

((ServletAdapter) threadSelector.getAdapter()).addFilter()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文