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的支持
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
2022-05-11 vmware快速搭建k8s集群 (vmware16|centos8|docker-19.03.15|k8s-1.16.9|calico-3.16)(kubeadm安装方式)