Tomcat内部结构及其处理流程

一、我们先看看Tomcat的结构和server.xml配置
Tomcat内部结构及其处理流程_第1张图片
Tomcat8.5的server.xml



  
  
  
  
  
  
    
  
  
    
    
    
      
        
      
      
        
      
    
  

由上图和配置文件,我们可以知道tomcat的内部有什么。

二、下面介绍它们是如何配合工作的,以及它们各自的功能。

  1. Server是Tomcat的最顶层元素,是service的集合,包含多个service,Server控制整个Tomcat的生命周期。
  2. Service由一个Container和多个Connector组成,形成一个独立完整的处理单元,对外提供服务。一般情况下我们并不需要配置多个Service,server.xml默认配置了一个Catalina的Service。
  3. Tomcat将Engine,Host,Context,Wrapper统一抽象成Container,完成任务的操作在此实现。
  4. Engine:没有父容器,一个 Engine代表一个完整的 Servlet 引擎,它接收来自Connector的请求,并决定传给哪个Host来处理,Host处理完请求后,将结果返回给Engine,Engine再将结果返回给Connector。
  5. Host:Engine可以包含多个Host,每个Host代表一个虚拟主机,这个虚拟主机的作用就是运行多个应用,它负责安装和展开这些应用,并且标识这个应用以便能够区分它们,每个虚拟主机对应的一个域名,不同Host容器接受处理对应不同域名的请求。由上图server.xml配置文件的Host标签的name属性可以知道配置的是本地。
  6. Context:Host可以包含多个Context,Context是Servlet规范的实现,它提供了Servlet的基本环境,一个Context代表一个运行在Host上的Web应用。
  7. Wrapper: Context可以包含多个Wrapper, 一个Wrapper 负责管理一个 Servlet,包括的 Servlet 的装载、初始化、执行以及资源回收。Wrapper 是最底层的容器,它没有子容器了,所以调用它的 addChild 将会报错。
  8. Servlet是最终的执行程序。

最后:Connector接受到请求后,会将请求交给Container,Container处理完了之后将结果返回给Connector。

其它组件

Tomcat 还有其它组件,如安全组件 security、logger、session 等其它组件。这些组件共同为 Connector 和 Container 提供必要的服务。

再补个图:
Tomcat内部结构及其处理流程_第2张图片

你可能感兴趣的:(javaweb)