【问题标题】:Grizzly Embedded Server + Jersey service + Servlet filterGrizzly 嵌入式服务器 + Jersey 服务 + Servlet 过滤器
【发布时间】:2013-12-28 21:40:21
【问题描述】:

以下代码运行我的 REST 服务,但从未调用过我的 servlet 过滤器。有什么想法吗?

WebappContext webappContext = new WebappContext("grizzly web context", "");

FilterRegistration testFilterReg = webappContext.addFilter("TestFilter", TestFilter.class);
testFilterReg.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), "/*");

ResourceConfig rc = new ResourceConfig().register(MyResource.class);
HttpServer httpServer = GrizzlyHttpServerFactory.createHttpServer(URI.create("http://localhost:8080/myapp/"), rc);
webappContext.deploy(httpServer);

【问题讨论】:

  • 您能确认一下正在使用的 Jersey/Grizzly 版本吗?
  • 球衣 2.4.1。灰熊 2.3.3

标签: java servlet-filters grizzly jersey-2.0


【解决方案1】:

简而言之,以上述方式注册 ResourceConfig 将有效地绕过 Grizzly Servlet 容器。

为了利用 Servlet 过滤器,您需要这样做:

    WebappContext webappContext = new WebappContext("grizzly web context", "");

    FilterRegistration testFilterReg = webappContext.addFilter("TestFilter", TestFilter.class);
    testFilterReg.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), "/*");

    ServletRegistration servletRegistration = webappContext.addServlet("Jersey", org.glassfish.jersey.servlet.ServletContainer.class);
    servletRegistration.addMapping("/myapp/*");
    servletRegistration.setInitParameter("jersey.config.server.provider.packages", "com.example");


    HttpServer server = HttpServer.createSimpleServer();
    webappContext.deploy(server);
    server.start();

【讨论】:

猜你喜欢
  • 2010-11-29
  • 1970-01-01
  • 2018-03-14
  • 1970-01-01
  • 1970-01-01
  • 2016-09-12
  • 2019-04-12
  • 1970-01-01
  • 2011-03-02
相关资源
最近更新 更多