tomcat 笔记

Tomcat架构

在这里插入图片描述

  • 其中比较核心的组件就是Connector和Contaioner组件。
  • Bootstrap类是启动类,mian方法是启动入口,Bootstrap创建并操作Catalina类完成服务启动。应用程序构建了一个类加载器,用于加载 Catalina 内部类(通过累积在“catalina.home”下的“server”目录中找到的所有 JAR 文件),并启动容器的常规执行。 这种迂回方法的目的是将 Catalina 内部类(以及它们所依赖的任何其他类,例如 XML 解析器)保留在系统类路径之外,因此对应用程序级类不可见。
  • Catalina类可以认为是Tomcat本身,包含一个Server。负责解析Tomcat的配置⽂件(server.xml) , 以此来创建服务器Server组件并进⾏管理。
  • Server类代表整个 Catalina servlet 容器。 一个Server可能包含一个或多个Services。也实现了Lifecycle接口 ,这样当start()和stop()方法被调用时,所有定义的Services也会被启动或停止。
  • Service是一组一个或多个连接器,它们共享一个容器来处理它们的传入请求。 例如,这种安排允许非 SSL 和 SSL 连接器共享相同的 Web 应用程序群。一个 JVM 可以包含任意数量的 Service 实例; 但是,它们彼此完全独立,仅共享系统类路径上的基本 JVM 设施和类。
  • Connector
    在这里插入图片描述
    • 名称为:coyote
    • Connector负责处理网络连接,转化ServletRequest请求发送到Container中,接收Container的ServletResponse,转为网络连接
    • ProtocolHandler:组合Endpoint 和 Processor,实现协议处理。按照协议和IO类型共用6个实现类:AjpNioProtocol ,AjpAprProtocol, AjpNio2Protocol , Http11NioProtocol ,Http11Nio2Protocol ,Http11AprProtocol
    • EndPoint:使用Socket解析IP和TCP协议
    • Processor:接收EndPoint的Socket,解析Http/Ajp协议,将socket中的输入流转化为成Tomcat Request
    • Adapter:将Tomcat Request转化为ServletRequest
  • Container
    在这里插入图片描述
    • 负责处理servlet请求
    • Engine:Catalina的Servlet引擎
    • Host:代表⼀个虚拟主机,或者说⼀个站点
    • Context:表示⼀个Web应⽤
    • Wrapper:表示⼀个Servlet
      在这里插入图片描述

tomcat启动流程图

在这里插入图片描述

tomcat请求处理流程图

在这里插入图片描述

在这里插入图片描述

Tomcat类加载

博客:https://www.jianshu.com/p/51b2c50c58eb
在这里插入图片描述

  • 引导类加载器 和 扩展类加载器 的作⽤不变
  • 系统类加载器正常情况下加载的是 CLASSPATH 下的类,但是 Tomcat 的启动脚本并未使⽤该变量,⽽是加载tomcat启动的类,⽐如bootstrap.jar,通常在catalina.bat或者catalina.sh中指定。位于CATALINA_HOME/bin下
  • Common 通⽤类加载器加载Tomcat使⽤以及应⽤通⽤的⼀些类,位于CATALINA_HOME/lib下,⽐如servlet-api.jar
  • Catalina ClassLoader ⽤于加载服务器内部可⻅类,这些类应⽤程序不能访问
  • Shared ClassLoader ⽤于加载应⽤程序共享类,这些类服务器不会依赖
  • Webapp ClassLoader,每个应⽤程序都会有⼀个独⼀⽆⼆的Webapp ClassLoader,他⽤来加载本应⽤程序 /WEB-INF/classes 和 /WEB-INF/lib 下的类。
    通过这种设计,Tomcat可以做到
  • JDK和CATALINA_HOME/bin,CATALINA_HOME/lib下的类复用
  • Tomcat内部类和应用程序类相互隔离
  • 每个web应用的类相互隔离

tomcat Lifecycle和监听器

https://www.jianshu.com/p/2a9ffbd00724
https://blog.csdn.net/qq_36838191/article/details/80054236

tomcat热部署

定义

tomcat处于运行状态时,能够监测webapps下的文件,如果有新的web应用加入进来,会自运发布这个WEB应用。

配置

tomcat的server.xml的标签autoPlay设置为true。(默认为true)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值