Tomcat源码学习笔记-整体架构

前言

Tomcat作为目前非常流行的web容器,其架构设计是非常值得我们借鉴的,它的生命周期管理、多级容器的协调工作,同时在Tomcat中运用了很多设计模式。

顶层架构
1

Tomcat的架构设计非常的模块化,从上图可以看出最上层为Server服务器,为Service服务提供一个生存环境,掌握每个Service服务的生命周期,而每个Service则是对外提供的服务。

而每个Service包含两个核心组件Connector和Container,这两个组件的作用如下:

​ Connector:负责接收浏览器的TCP连接请求,提供Socket与Request、Response的相关转化,与请求端交换数据

​ Container:用于封装和管理Servlet,以及具体处理Request请求,是所有子容器的父接口(包括Engine、Host、Context、Wrapper)

从上图中可以看出一个Service服务对应一个Container,而可以对应多个Connector,一个服务对外可以提供不同协议的连接如Https、Http,也可以提供相同协议但是端口不同的连接。

我们从Tomcat的Server.xml中也可以窥探到Tomcat的一些设计,Tomcat默认监听8005端口,接收SHUTDOWN命令则关闭Tomcat。第一部分是Tomcat的一些监听器,第二部分是全局命名资源,第三部分就是Service服务了,包括了两个Connector,一个提供HTTP/1.1连接,默认端口就是常用的8080了,另外一个负责和其他的HTTP服务器建立连接。而Engine和Host则是嵌套的子容器。



  
  
  
  
  
  

  
  
    
  

  
  
    
    
    
      
        
      
      
        
      
    
  


除了两个核心组件,另外还有负责jsp页面解析、jsp属性验证,同时也负责将jsp页面动态转换为java代码并编译为class文件的Jasper组件,提供命名服务的Naming组件,提供Session服务的Session组件,负责日志记录的Logging组件,提供JVM监控服务的JMX组件。

生命周期

整个Tomcat的生命周期以观察者模式为基础

Subject 抽象主题:负责管理所有观察者的引用,同时定义主要的事件操作,而Tomcat核心类LifeCycle就是这个抽象主题,spring也有LifeCycle管理着整个生命周期

ConcretSubject 具体主题:实现抽象主题定义的所有接口,发生变化通知观察者,如StandardServer

Observer 观察者:监听主题变化的操作接口,LifeCycleListener为这个抽象观察者

你可能感兴趣的:(Tomcat源码学习笔记-整体架构)