欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

知识小罐头09(tomcat8启动源码分析 下)

程序员文章站 2022-04-14 11:05:29
初始化已经完成,现在就是启动这些组件,Tomcat中的start方法就是用于启动的,其实start的原理还是和上一篇说的初始化几乎一样!这里我就大概说一下,看几个比较关键的地方就行了。 前面的步骤就大概截图看一下就ok了 ok,由于前面这些东西基本和初始化的流程一样,跳过,我们就从启动service ......

  初始化已经完成,现在就是启动这些组件,tomcat中的start方法就是用于启动的,其实start的原理还是和上一篇说的初始化几乎一样!这里我就大概说一下,看几个比较关键的地方就行了。

  前面的步骤就大概截图看一下就ok了

知识小罐头09(tomcat8启动源码分析 下)

知识小罐头09(tomcat8启动源码分析 下)

知识小罐头09(tomcat8启动源码分析 下)

知识小罐头09(tomcat8启动源码分析 下)

知识小罐头09(tomcat8启动源码分析 下)

 

  ok,由于前面这些东西基本和初始化的流程一样,跳过,我们就从启动service开始看;

知识小罐头09(tomcat8启动源码分析 下)

知识小罐头09(tomcat8启动源码分析 下)

  其实关键就是这三步,启动引擎,监听器和连接器,我们好好看看这三步其中的原理。

 

1.启动引擎

  engine.start()方法其实就是到standardengine中startinternal()方法,然后会先执行父类的startinternal()方法

知识小罐头09(tomcat8启动源码分析 下)

 

  看看父类的一些关键的地方(其实都是安全验证,准备好异步线程去执行从连接器传过来的请求和响应对象,这些不是我们的重点)

知识小罐头09(tomcat8启动源码分析 下)

 

  最后是到standardpipeline中的startinternal方法

知识小罐头09(tomcat8启动源码分析 下)

 

2.启动监听器

知识小罐头09(tomcat8启动源码分析 下)

  

  还记得上一篇初始化说的只是初始化了engine,那些host,context,wrapper还没有初始化呢!其实就是在这里进行初始化

知识小罐头09(tomcat8启动源码分析 下)

 

   我们就重点看看上图的最后一个方法registerhost(host),看看是怎么注册的,其实可以发现就是一层一层的到wrapper

知识小罐头09(tomcat8启动源码分析 下)

知识小罐头09(tomcat8启动源码分析 下)

知识小罐头09(tomcat8启动源码分析 下)

 

 3.启动连接器

知识小罐头09(tomcat8启动源码分析 下)

知识小罐头09(tomcat8启动源码分析 下)

知识小罐头09(tomcat8启动源码分析 下)

知识小罐头09(tomcat8启动源码分析 下)

 

  这个startinternal中无非是设置一下nio的缓存,niochannels,以及poller线程,以及启动acceptor的线程

知识小罐头09(tomcat8启动源码分析 下)

知识小罐头09(tomcat8启动源码分析 下)

 

   ok,到这里可以说是所有的容器该启动的已经全部启动,各种各样的线程池,异步线程,轮询线程等等也准备就绪

 

4.await() 

  最后就是await()方法了,这个方法在catalina的start方法内部

知识小罐头09(tomcat8启动源码分析 下)

知识小罐头09(tomcat8启动源码分析 下)

 

  先是获取整个服务器server,然后在server中创建server socket进行等待;

 知识小罐头09(tomcat8启动源码分析 下)

知识小罐头09(tomcat8启动源码分析 下)

知识小罐头09(tomcat8启动源码分析 下)

知识小罐头09(tomcat8启动源码分析 下)

 

   至此,tomcat中的所有组件就已经全部启动了,只要浏览器去访问tomcat,服务器就会接受到请求,然后会有线程会处理这个请求(这里会涉及到nio,nio结构图如下;就是会将这些请求的socket放到一个叫做seletor中并且有个key与之对应,selector中会有一个线程每次都去访问各个socket看看有没有读写操作,有的话就通过key找到对应的socket并利用缓存进行处理),这里nio只是随意说一下,东西太多三言两语说不清楚,后面可能会写一篇关于bio,nio,aio的文章。

 知识小罐头09(tomcat8启动源码分析 下)