Grizzly嵌入式服务器+ Jersey服务+ Servlet过滤器 [英] Grizzly Embedded Server + Jersey service + Servlet filter
本文介绍了Grizzly嵌入式服务器+ Jersey服务+ Servlet过滤器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以下代码运行我的REST服务,但从未调用我的servlet过滤器.有什么想法吗?
The following code runs my REST service but my servlet filter never gets called. Any ideas?
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);
推荐答案
简而言之,以上述方式注册ResourceConfig将有效地绕过Grizzly Servlet容器.
In short, registering your ResourceConfig in the manner as you have done above will effectively bypass the Grizzly Servlet container.
为了利用Servlet过滤器,您将需要执行以下操作:
In order to leverage the Servlet Filter, you will need to something like this:
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();
这篇关于Grizzly嵌入式服务器+ Jersey服务+ Servlet过滤器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文