zoukankan      html  css  js  c++  java
  • Tomcat架构

    网络模型

    Tomcat架构图

    两个核心组件

    • Connector

    设计思想 :高内聚、低耦合
    EndPoint:提供字节流给Processor
    Processor:提供Tomcat Request对象给Adapter
    Adapter:提供ServletRequest给容器
    

    (1)EndPoint
    
    监听通信端口,是对传输层的抽象,用来实现 TCP/IP 协议的。
    对应的抽象类为AbstractEndPoint,有很多实现类,比如NioEndPoint,JIoEndPoint等。在其中有两个组件,一个
    是Acceptor,另外一个是SocketProcessor。
    Acceptor用于监听Socket连接请求,SocketProcessor用于处理接收到的Socket请求
    
    (2)Processor
    
    Processor是用于实现HTTP协议的,也就是说Processor是针对应用层协议的抽象。
    Processor接受来自EndPoint的Socket,然后解析成Tomcat Request和Tomcat Response对象,最后通过Adapter
    提交给容器。
    对应的抽象类为AbstractProcessor,有很多实现类,比如AjpProcessor、Http11Processor等。
    
    (3)Adpater
    
    ProtocolHandler接口负责解析请求并生成 Tomcat Request 类。
    需要把这个 Request 对象转换成 ServletRequest。
    Tomcat 引入CoyoteAdapter,这是适配器模式的经典运用,连接器调用 CoyoteAdapter 的 sevice 方法,传入的是
    Tomcat Request 对象,CoyoteAdapter 负责将 Tomcat Request 转成 ServletRequest,再调用容器的 service 方
    法。
    
    优化图解
    Endpoint接收Socket连接,生成一个SocketProcessor任务提交到线程池去处理
    SocketProcessor的run方法会调用Processor组件去解析应用层协议,Processor通过解析生成Request对象后,会调
    用Adapter的service方法。
    

    • Container

    Request Process Flow

    官网 :https://tomcat.apache.org/tomcat-8.0-doc/architecture/requestProcess/request-process.png
    

    扩展

    (1)自定义类加载器
    
    (2)Session管理
    
    
  • 相关阅读:
    HDU 4539郑厂长系列故事――排兵布阵(状压DP)
    HDU 2196Computer(树形DP)
    HDU 4284Travel(状压DP)
    HDU 1520Anniversary party(树型DP)
    HDU 3920Clear All of Them I(状压DP)
    HDU 3853LOOPS(简单概率DP)
    UVA 11983 Weird Advertisement(线段树求矩形并的面积)
    POJ 2886Who Gets the Most Candies?(线段树)
    POJ 2828Buy Tickets
    HDU 1394Minimum Inversion Number(线段树)
  • 原文地址:https://www.cnblogs.com/snail-gao/p/12163393.html
Copyright © 2011-2022 走看看