tomcat源码阅读笔记二——初始化过程(下)
2018-03-03 22:43
411 查看
一 .在StandardServer中,调用initInternal()方法。
在此过程,1.初始化了globalNamingResources(此globalNamingResources在catalina初始化的时候被加载到jvm),
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/71ce89cdb776fca3b13fef226bb80fc3)
作为全局的资源共享,里面保存的东西如图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/43b8ffa19d7c715f7e24dc47dce4756e)
2.之后用向上找到URLClassLoader,用此URLClassLoader 加载所有jdk中的jar包,放到ExtendsionValidator中的containerManifestResources中。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/f0f172b77bc9cb8ab808493f642fad42)
3.然后启动所有的services
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/98ecceb8ce8d616b48fde0f1d9390e89)
二.在service启动过程中,调用initInternal()方法,此方法做了如下事情:
1.启动此service所指向的Container(catalina初始化的时候用digester加载到jvm的StandardEngine),
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/f2c4fefe5aad2edc276517793535134c)
及初始化StandardEngine,调用其initInternal方法,开启了一个可以异步执行操作的的线程池,供之后在startInternal()中启动StandardHos StandardContext StandardWrapper用,如图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/2c32d03cb824ca736a1869ce215b1276)
2.然后初始化StandardThreadExecutor,
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/f4aac5f65a13a35d24778aab7821eb18)
3.初始化connectors
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/eb509e63e39ad7a90b5c1f958eb36257)
在connector初始化过程中,做了如下的事情:
3.1创建connector与container链接的桥梁CoyoteAdapter
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/aa9aa5d889e0bdb1cbff6de331be15d3)
3.2协议处理器初始化(Http11Protocol Http11NioProtocol Http11AprProtocol,可在server.xml中指定其中一种)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/dadf69947922b9e59a3dcaaf4b56c4b3)
以默认的bio阻塞模式(Http11Protocl)为例:
3.2.1 把此协议处理器注册到Registry中,3.2.2 初始化endPoint,及初始化一个ServerSocket,等待网络请求
3.3初始化mapperListener (connector与主机地址host的映射)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/89e54e17a51791d594fe54620db794b0)
至此,所有的初始化完成,之后开始startInternal过程。
在此过程,1.初始化了globalNamingResources(此globalNamingResources在catalina初始化的时候被加载到jvm),
作为全局的资源共享,里面保存的东西如图:
2.之后用向上找到URLClassLoader,用此URLClassLoader 加载所有jdk中的jar包,放到ExtendsionValidator中的containerManifestResources中。
3.然后启动所有的services
二.在service启动过程中,调用initInternal()方法,此方法做了如下事情:
1.启动此service所指向的Container(catalina初始化的时候用digester加载到jvm的StandardEngine),
及初始化StandardEngine,调用其initInternal方法,开启了一个可以异步执行操作的的线程池,供之后在startInternal()中启动StandardHos StandardContext StandardWrapper用,如图:
2.然后初始化StandardThreadExecutor,
3.初始化connectors
在connector初始化过程中,做了如下的事情:
3.1创建connector与container链接的桥梁CoyoteAdapter
3.2协议处理器初始化(Http11Protocol Http11NioProtocol Http11AprProtocol,可在server.xml中指定其中一种)
以默认的bio阻塞模式(Http11Protocl)为例:
3.2.1 把此协议处理器注册到Registry中,3.2.2 初始化endPoint,及初始化一个ServerSocket,等待网络请求
3.3初始化mapperListener (connector与主机地址host的映射)
至此,所有的初始化完成,之后开始startInternal过程。
相关文章推荐
- tomcat源码阅读笔记二——初始化过程(上)
- Discuz!NT代码阅读笔记(2)--网站安装自动化--论坛程序安装及初始化过程
- Tomcat源码阅读之初始化连接器组件
- Tomcat源码阅读系列(三)启动和关闭过程
- Discuz!NT代码阅读笔记(2)--网站安装自动化--论坛程序安装及初始化过程
- Tomcat源码阅读(一)初始化
- tomcat源码分析 StandardServer初始化过程
- tomcat源码阅读笔记一
- SDL源码阅读笔记(2) video dirver的初始化及选择
- Tomcat源码阅读之Init过程
- tomcat源码研读笔记—tomcat的初始化之一 StandardServer的初始化
- tomcat源码分析 StandardServer初始化过程
- Discuz!NT代码阅读笔记(2)--网站安装自动化--论坛程序安装及初始化过程 (转)
- Tomcat源码阅读之Load过程
- tomcat源码研读笔记—tomcat的初始化之二 StandardService的初始化
- Tomcat源码阅读之初始化Server组件
- tomcat源码研读笔记—tomcat的初始化之三 HttpConnector的初始化
- tomcat源码解析过程记录笔记
- ffmpeg框架阅读笔记二 : 寻找AVIOContext初始化过程,自定义初始化。
- SDL源码阅读笔记(2) video dirver的初始化及选择