Tomcat源码分析

Tomcat架构

 

连接器 Coyote

 

 

 Catalina容器

 

 

 

 

 

 源码分析

 

 

 启动流程

 Tomcat请求处理流程

Tomcat是通过Mapper组件来完成这个任务。

Mapper组件的功能就是将一个URL定位到一个Servlet.

Host容器里配置的域名、Context容器里的web应用路径,以及Wrapper容器里Servlet映射的路径.

当一个请求到来时,Mapper组件通过解析请求URI里的域名和路径,再到自己保存的Map里去查找,就能定位到一个servlet。

请你注意,一个请求URL最后只会定位到一个wrapper容器,也就是一个servlet。

 

 

 

 

 pipeline是责任链模式

在Tomcat中定义了pipeline 和 valve 两个接口,Pipeline 用于构建责链,后者代表责任链上的每人处理器。pipeline 中维护了个其础的valve,它始终位于pipeline的未端( 最后执行),封装了具体的请求处理和输出响应的过程,当然,我们也可以调用addvalve()方法,为Pipeline 添如其他的valve ,后添加的yalve 位于某的valve前,并按照添加顺宝执行。Pipiline通过获得首人Valve来启动整合链条的执行。

 

Jasper模板引擎

Jasper模块 是Tomcat的JSP核心引擎,我们知道JSP本质上是一个servlet,Tomcat使用Jasper对JSP语法进行解析,生成Servlet并生成class字节码,用户在进行访问jsp时,会访问servlet,最终将访问的结果直接响应在浏览器端。

另外,在运行的时候,Jasper还会检测JSP文件是否修改,如果修改,则会重新编译JSP文件。

JSP编译方式:运行时编译、预编译

 

 

 Server.xml

 

 

 给连接器指定共享线程池

 

 

 Connector

 

 Engine

 HOST

 

 

 

 

 

 Nginx

 

 

 概率:1/3 2/3

 

 Session共享方案

方案1:nginx的负载均衡策略 ip_hash

方案2:session复制:tomcat内部广播机制

方案3:sso单点登录

 

 

 

 安全:

1.修改shutdown命令 确保配置安全

2.使用https 保证传输安全

 

 性能

 

 

 

 

 WebSocket 和 Tomcat对WebSocket的支持

 

 

 

 

 

 

 

 

posted @ 2023-05-11 01:23  Peter.Jones  阅读(167)  评论(0编辑  收藏  举报