最简单的解决方案是利用 Grizzly 嵌入式 Servlet 支持。
这当然意味着您需要做一些工作才能将当前HttpHandler
逻辑迁移到Servlet
s - 但这确实不应该太难,因为HttpHandler
API 非常相似。
我会给出一些高水平的观点。
HttpServer server = HttpServlet.createSimpleServer(<docroot>, <host>, <port>);
// use "" for <context path> if you want the context path to be /
WebappContext ctx = new WebappContext(<logical name>, <context path>);
// do some Jersey initialization here
// Register the Servlets that were converted from HttpHandlers
ServletRegistration s1 = ctx.addServlet(<servlet name>, <Servlet instance or class name>);
s1.addMapping(<url pattern for s1>);
// Repeat for other Servlets ...
// Now for the authentication Filter ...
FilterRegistration reg = ctx.addFilter(<filter name>, <filter instance or class name>);
// Apply this filter to all requests
reg.addMapping(null, "/*");
// do any other additional initialization work ...
// "Deploy" ctx to the server.
ctx.deploy(server);
// start the server and test ...
注意:Servlet 和过滤器的动态注册基于 Servlet 3.0 API,所以如果您想了解如何处理 Servlet 侦听器、初始化参数等,我建议您查看 Servlet 3.0 javadocs。
注意 2:Grizzly Servlet 实现不是 100% 兼容 Servlet 规范。它不支持标准的 Servlet 注释,或传统 Servlet Web 应用程序归档部署的部署。
最后,这里有使用嵌入式 Servlet API 的示例