【问题标题】:Handle Jersey/JAX-RS REST manually手动处理 Jersey/JAX-RS REST
【发布时间】:2013-08-12 20:28:04
【问题描述】:

我正在构建一个应用程序,我想在其中拦截 HTTP 请求并决定是否将它们传递给 JAX-RS 实现进行处理。

我基本上只有一个过滤器和前端控制器 servlet 组合,并且希望 servlet 将路由委托给 Jersey 或我的“标准”路由器。

我可以看到很多使用 Jersey 作为 servlet 或启动 HTTP 服务器的示例,但似乎没有一种方便的方法来获取 HttpServletRequest/HttpServletResponse 对并说“你去 Jersey,给我路由”。

我是否遗漏了一些明显的东西?

【问题讨论】:

    标签: java jersey jax-rs


    【解决方案1】:

    在这种情况下,我认为 RequestDispatcher 可能会有所帮助

    RequestDispatcher 对象可用于将请求转发到另一个资源,因此您可以尝试以下操作:

    public class FrontServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            ServletContext sc = this.getServletContext();
            if (someCondition) {
                sc.getRequestDispatcher("/jersey/servlet").forward(req, resp);
            }else{
                sc.getRequestDispatcher("/standard/router").forward(req, resp);
            }
        }
    }
    

    【讨论】:

    • 这看起来是最好的方法。所以我无论如何都配置了 Jersey servlet 并将其映射到一个路径,但是手动向它发送请求。我的过滤器会捕获所有传入的请求,所以我不担心将 Jersey 暴露在随机的 /jersey/servlet 路径上。
    猜你喜欢
    • 2013-10-18
    • 2012-06-26
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 2016-12-02
    相关资源
    最近更新 更多