Tomcat9的启动和终止


  1. 执行Bootstrap Main方法
  2. 执行Tomcat的用户级自定义ClassLoader进行Tomcat用到的类加载
  3. 对Tomcat容器及相关组件进行初始化
  4. 对容器下关联的Web应用进行ServletContext上下文创建以及在容器中注册
  5. 对Web应用的下的类文件、jar文件进行加载
  6. 加载完成后执行ServletContextListener
  7. 容器与应用加载完毕后,初始化连接器下对应若干处理进程以及ServerSocketChannel监听进程
  8. 启动完成


StandardEngine、StandardHost的启动,它们的父容器在init的时候创建一个启动和停止子容器的线程池startStopExecutor, 然后父容器启动的时候首先通过异步的方式将子容器的启动通过org.apache.catalina.core.ContainerBase.StartChild(Callable)提交到startStopExecutor进行启动, 而子容器启动的时候首先会初始化,然后再启动。


终止:

Tomcat启动的时候的主线程会在8005端口(默认配置,可以更改)上建立socket监听,

org.apache.catalina.core.StandardServer#await()是保持tomcat运行的秘密,该方法启动一个ServerSocket,侦听发出停止的字符串。这是一个死循环。当有停止运行的字符发出,跳出此循环。

当关闭的时候,最终其实就是新起了一个进程然后向Tomcat主线程监听的8005端口发送了一个SHUTDOWN字符串,这样主线程就会结束了,主线程结束了以后,因为其它的线程都是dameon线程,这样依赖Jvm就会退出了。

Tomcat利用了shutdown hook机制来在Jvm关闭的时候关闭各个组件。CatalinaShutdownHook是一个已经初始化但是还没有启动的线程,当Jvm关闭的时候,它会启动并并发的运行所有已经注册过的shutdown hooks,多用于意外关闭Tomcat的时候,来完成优雅停机的


Tomcat用到的端口

8005 远程停服务端口 

8080 为HTTP端口

 8443 为HTTPS端口 

8009 为AJP端口,APACHE能过AJP协议访问TOMCAT的8009端口。

"ajp-bio-8009-AsyncTimeout" daemon prio=5 tid=7f8738afe000 nid=0x115ad6000 waiting on condition [115ad5000] 

"ajp-bio-8009-Acceptor-0" daemon prio=5 tid=7f8738b05800 nid=0x1159d3000 runnable [1159d2000] 

"http-bio-8080-AsyncTimeout" daemon prio=5 tid=7f8735acb800 nid=0x1158d0000 waiting on condition [1158cf000]    

"http-bio-8080-Acceptor-0" daemon prio=5 tid=7f8735acd000 nid=0x1157cd000 runnable [1157cc000] 

"ContainerBackgroundProcessor[StandardEngine[Catalina]]" daemon prio=5 tid=7f8732850800 nid=0x111203000 waiting on condition [111202000] 

"main" prio=5 tid=7f8735000800 nid=0x10843e000 runnable [10843c000]

Dameon线程又叫后台或者守护线程,它负责在程序运行期提供一种通用服务的线程,比如垃圾收集线程,非Dameon线程和Dameon线程的区别就在于当程序中所有的非Daemon线程都终止的时候,Jvm会杀死余下的Dameon线程,然后退出。  

类图:www.processon.com/view/link/5…

启动停止:www.processon.com/view/link/5…


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值