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管理
    
    
  • 相关阅读:
    Kosaraju算法---强联通分量
    Java和C++的区别
    嵌入式面试题汇总
    tabbar 之 基本结构搭建
    路由 之 再识
    常见问题 之 vue项目中使用less报错
    路由 之 初识
    VueCLI3创建项目和目录结构与配置信息详解
    runtime-compiler 和 runtime-only的区别
    vueCLI2 之 目录结构
  • 原文地址:https://www.cnblogs.com/snail-gao/p/12163393.html
Copyright © 2011-2022 走看看