zoukankan      html  css  js  c++  java
  • springcloud zuul

    zuul是springcloud的API网关。

    入口也是springmvc的DispatcherServlet。

     实际的handler是ZuulController,通过handleRequest方法调用了ZuulServlet的service方法来处理请求。

    ZuulServlet就是一个普通的servlet,其service方法如下:

    @Override
    public void service(javax.servlet.ServletRequest servletRequest, javax.servlet.ServletResponse servletResponse) throws ServletException, IOException {
    try {
    init((HttpServletRequest) servletRequest, (HttpServletResponse) servletResponse);

    // Marks this request as having passed through the "Zuul engine", as opposed to servlets
    // explicitly bound in web.xml, for which requests will not have the same data attached
    RequestContext context = RequestContext.getCurrentContext();
    context.setZuulEngineRan();

    try {
    preRoute(); //pre ZuulFilter在这里调用

    } catch (ZuulException e) {
    error(e);
    postRoute();
    return;
    }
    try {
    route(); //这里做路由
    } catch (ZuulException e) {
    error(e);
    postRoute(); //post ZuulFilter在这里调用
                return;
    }
    try {
    postRoute(); //post ZuulFilter在这里调用

    } catch (ZuulException e) {
    error(e);
    return;
    }

    } catch (Throwable e) {
    error(new ZuulException(e, 500, "UNHANDLED_EXCEPTION_" + e.getClass().getName()));
    } finally {
    RequestContext.getCurrentContext().unset();
    }
    }
     
  • 相关阅读:
    Git Merge Request
    Hazelcast Hazelcast介绍与使用
    Git 修改name/author信息
    HDU 2553 N皇后问题(DFS)
    HDU 1070 Milk(水题)
    HDU 2616 Kill the monster(简单DFS)
    HDU 1426 Sudoku Killer(BFS)
    HDU 2216 Game III(BFS)
    URAL 1001 Reverse Root(水题)
    URAL 1902 NeoVenice(水题)
  • 原文地址:https://www.cnblogs.com/fsqsec/p/8342188.html
Copyright © 2011-2022 走看看