Tomcat 整体架构分析( 二 )

  • Mapper组件 , 客户端请求的路由导航组件 , 通过它能对一个完整的请求地址进行路由 , 通俗地说 , 就是它能通过请求地址找到对应的Servlet 。
  • CoyoteAdaptor组件 , 一个将Connector和Container适配起来的适配器 。

  • Tomcat 整体架构分析

    文章插图
     
    如上图所示 , 在非阻塞I/O方式下 , Connector的结构类似阻塞模式 , Http11Protocol组件改成Http11NioProtocol组件 , JIoEndpoint组件改成NioEndpoint, Http11Processor组件改成Http11NioProcessor组件 , 这些类似的组件的功能也都类似 。唯独多了一个Poller组件 , 它的职责是在非阻塞I/O方式下轮询多个客户端连接 , 不断检测、处理各种事件 , 例如不断检测各个连接是否有可读 , 对于可读的客户端连接则尝试进行读取并解析消息报文 。
    5. Engine组件#Tomcat内部有4个级别的容器 , 分别是Engine、Host、Context和Wrapper 。Engine代表全局Servlet引擎 , 每个Service组件只能包含一个Engine容器组件 , 但Engine组件可以包含若干Host容器组件 。除了Host之外 , 它还包含如下组件 。
    • Listener组件:可以在Tomcat生命周期中完成某些Engine容器相关工作的监听器 。
    • AccessLog组件:客户端的访问日志 , 所有客户端访问都会被记录 。
    • Cluster组件:它提供集群功能 , 可以将Engine容器需要共享的数据同步到集群中的其他Tomcat实例上 。
    • Pipeline组件:Engine容器对请求进行处理的管道 。
    • Realm组件:提供了Engine容器级别的用户-密码-权限的数据对象 , 
    6. Host组件#【Tomcat 整体架构分析】Tomcat中Host组件代表虚拟主机 , 这些虚拟主机可以存放多个Web应用的抽象(Context容器) 。除了Context组件之外 , 它还包含如下组件 。
    • Listener组件:可以在Tomcat生命周期中完成某些Host容器相关工作的监听器 。
    • AccessLog组件:客户端的访问日志 , 对该虚拟主机上所有Web应用的访问都会被记录 。
    • Cluster组件:它提供集群功能 , 可以将Host容器需要共享的数据同步到集群中的其他Tomcat实例 上 。
    • Pipeline组件:Host容器对请求进行处理的管道 。
    • Realm组件:提供了Host容器级别的用户-密码-权限的数据对象 , 配合资源认证模块使用 。
    7. Context组件#Context组件是Web应用的抽象 , 我们开发的Web应用部署到Tomcat后运行时就会转化成Context对象 。它包含了各种静态资源、若干Servlet(Wrapper容器)以及各种其他动态资源 。它主要包括如下组件 。
    • Listener组件:可以在Tomcat生命周期中完成某些Context容器相关工作的监听器 。
    • Filter组件:过滤器组件 , 提供统一的业务逻辑处理 。
    • AccessLog组件:客户端的访问日志 , 对该Web应用的访问都会被记录 。
    • Pipeline组件:Context容器对请求进行处理的管道 。
    • Realm组件:提供了Context容器级别的用户-密码-权限的数据对象 , 配合资源认证模块使用 。
    • Loader组件:Web应用加载器 , 用于加载Web应用的资源 , 它要保证不同Web应用之间的资源隔离
    • Manager组件:会话管理器 , 用于管理对应Web容器的会话 , 包括维护会话的生成、更新和销毁 。
    • NamingResource组件:命名资源 , 它负责将Tomcat配置文件的server.xml和Web应用的context.xml资源和属性映射到内存中 。
    • Mapper组件:Servlet映射器 , 它属于Context内部的路由映射器 , 只负责该Context容器的路由导航.
    • Wrapper组件:Context的子容器 。
    8. Wrapper组件#Wrapper容器是Tomcat中4个级别的容器中最小的 , 与之相对应的是Servlet , 一个Wrapper对应一个Servlet 。它包含如下组件 。