• 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();
    }
    }
     
  • 相关阅读:
    C++强制类型转换操作符 const_cast
    URL的UTF-8 decode
    react-8 路由
    react-7 条件渲染与列表渲染
    react-6 react 生命周期
    react-5 受控组件,非受控组件与高阶函数
    react-4 react 组件的三大属性
    react-3 JSX 语法
    react-2 react环境搭建
    react-1 React
  • 原文地址:https://www.cnblogs.com/fsqsec/p/8342188.html
Copyright © 2020-2023  润新知