- 1
- 0
- 约9.79千字
- 约 33页
- 2017-08-15 发布于湖北
- 举报
目 录
一、背景 2
二、Tomcat源码目录结构 3
三、Tomcat体系结构 4
四、Tomcat源码解析 5
1. Tomcat的启动流程?? 7
2. Tomcat一次完整请求的处理流程 12
3. Tomcat的关闭流程 18
4. Tomcat的Connector组件 18
5. Tomcat运行过程中的线程概况及线程模型 20
6. Tomcat的类加载机制 25
7、Tomcat所涉及的设计模式 32
一、背景
??
二、Tomcat源码目录结构
三、Tomcat体系结构
四、Tomcat源码解析
?
Servlet规范和Web应用及Web容器间的关系
? ? ??
Tomcat对Servlet规范的实现
1. Tomcat的启动流程?? ? ? ??
从以上的代码中,可以看到在Tomcat启动的时候,执行了三个关键方法即init、load、和start。后面的两个方法都是通过反射调用org.apache.catalina.startup.Catalina的同名方法完成的,所以后面在介绍时将会直接转到Catalina的同名方法。首先分析一下Bootstrap的init方法,在该方法中将会初始化一些全局的系统属性、初始化类加载器、通过反射得到Catalina实例,在这里我们重点看一下初始化类加载器的initClassLoaders()方法:
?
在以上的代码中,我们可以看到初始化了StandardClassLoader类加载器,这个类加载器详细的会在后面关于Tomcat类加载器机制中介绍。
然后我们进入Catalina的load方法:
在以上的代码中,关键的任务有两项即使用Digester组件按照给定的规则解析server.xml、调用Server的init方法,而Server的init方法中,会发布事件并调用各个Service的init方法,从而级联完成各个组件的初始化。每个组件的初始化都是比较有意思的,但是我们限于篇幅先关注Tomcat各级容器的初始化及Connector的初始化,这可能是最值得关注的地方。
首先看下StandardService的startInternal方法, 核心代码如下:
启动Tomcat各级容器会依次先启动StandardEngine -- StandardHost -- StandardContext(代表一个WebApp应用),因为我们比较关心我们的Web应用是在哪里被初始化回调的,所以重点看下StandardContext的startInternal()方法,核心代码如下:
Tomcat的各级容器初始化完成后,就开始对Connector的初始化,接着看Connector的initInternal方法,核心代码如下:
在Http11Protocol的init方法中,核心代码如下:
我们看到最终的初始化方法都会调到JIoEndpoint的bind方法,网络初始化和对请求的最初处理都是通过该类及其内部类完成的,后续的内容会详细阐述这个JioEndpoint:
在上面的代码中,我们可以看到此时初始化了一个ServerSocket对象,用来监听绑定端口的请求。
紧接着我们来看看JioEndpoint的start()方法,核心代码如下:
从以上的代码,可以看到,如果没有在server.xml中声明Executor的话,将会使用内部的一个容量为200的线程池用来后续的请求处理。并且按照参数acceptorThreadCount的设置,初始化线程来接受请求。而Acceptor就是正在接受请求并会分派给请求处理线程池:
从这里我们可以看到,Acceptor已经可以接收Socket请求了,并可以调用processSocket方法来对请求进行处理。至此,Tomcat的组件启动初始化完成,等待请求的到来。
?2. Tomcat一次完整请求的处理流程
接着请求处理线程池会起一个线程来处理请求来执行SocketProcessor,而SocketProcessor的run()方法中会调用Http11ConnectionHandler的process方法,SocketProcessor的run()方法核心代码如下:
在Http11ConnectionHandler中会根据当前请求的协议类型去创建相应的协议处理器,我们这里分析的是HTTP协议,所以会创建Http11Processor去执行process()方法,拿到Socket数据包后解析生成Tomcat内部的Request对象与Response对象。其中Request对象只是解析Header部分内容,请求参数等做延迟处理,接着就开始调用CoyoteAdapter类进入容器处理,Http11Processor的process方法核心代码如下:
?
紧接着C
您可能关注的文档
- T03二次结构施工方案资料.doc
- TD-LTE基本原理与关键技术资料.pptx
- TD-LTE基础知识介绍资料.pptx
- TD-LTE系统物理层基本过程资料.doc
- TDT1041-2013土地整治工程质量检验与评定规程附表资料.doc
- TD数据性能提升及干扰抑制专项V2资料.doc
- Tekla创建混凝土预制构件族(带钢筋)资料.doc
- Tesco操作流程资料.pptx
- TETRA-222逆变式焊接控制器(1)资料.doc
- TFS基本使用资料.pptx
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
原创力文档

文档评论(0)