二:Tomcat源码之整体架构与启动流程
Posted PoetryAndTheDistance
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二:Tomcat源码之整体架构与启动流程相关的知识,希望对你有一定的参考价值。
目录
整体架构
我们想要了解一个框架,首先要了解它是干什么的,Tomcat我们都知道,是用于处理连接过来的Socket请求的。那么Tomcat就会有两个功能:
-
- 对外处理连接,将收到的字节流转化为自己想要的Request和Response对象
- 对内处理Servlet,将对应的Request请求分发到相应的Servlet中
那么我们整体的骨架就出来了,Tomcat其实就分为两大部分,一部分是连接器(Connnector)处理对外连接和容器(Container)管理对内的Servelet。
大体的关系图如下:
描述:
最外层的大框就是代表一个Tomcat服务,一个Tomcat服务可以对应多个Service。每个Service都有连接器和容器。
这些对应的关系我们也可以打开在Tomcat目录配置文件中 server.xml中看出来。
<Server port="8006" shutdown="SHUTDOWN">
<Service name ="Catalina">
<Connector port ="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443"/>
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"></Host>
</Engine>
</Service>
</Server>
Tomcat各个组件对应的实现类
更多
Tomcat整体启动流程
蓝线部分是各个组件的初始化,在Catalina对象中创建了server.xml的解析器,一步到位创建出大部分的组件
红线部分是责任链模式的启动流程
绿线部分是热加载和热部署的过程(war包的解压和web.xml的解析,解析出listener filter servlet等)
以上是关于二:Tomcat源码之整体架构与启动流程的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段