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管理
    
    
  • 相关阅读:
    【Distributed】缓存技术
    【Redis】基本数据类型
    【Redis】安装、开启以及关闭
    【Ehcache】基础知识学习
    VS2012 改C# 模版
    C# Windows Services 启动和结束其它进程
    .net Console.ReadLine无效
    VS2012在解决方案资源管理器显示解决方案名称
    Mysql 数据库中9大对象
    C# 开发 Windows 服务 使用Log4net 组件 不能生成日志文件
  • 原文地址:https://www.cnblogs.com/snail-gao/p/12163393.html
Copyright © 2011-2022 走看看