博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tomcat9的启动和终止
阅读量:6711 次
发布时间:2019-06-25

本文共 1712 字,大约阅读时间需要 5 分钟。

  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线程,然后退出。  

类图:

启动停止:

转载地址:http://umalo.baihongyu.com/

你可能感兴趣的文章
Transparent Huge Pages相关概念
查看>>
浅谈RAID和LVM
查看>>
初中高级LINUX运维所需具备技能
查看>>
从开发到测试
查看>>
ajax轮询
查看>>
ubuntu: System program problem detected 问题
查看>>
产品优化利器
查看>>
js,query 选择radio+选中select+checkbox选中
查看>>
FreeBSD小技巧
查看>>
kolla简介
查看>>
php入门教程: php中字符的使用和操作
查看>>
php变量2
查看>>
Spring aop 异常统一处理
查看>>
【JS进阶2】attachEvent()/addEventListener() 对象添加触发事件
查看>>
Linux下查看文件和文件夹大小的df和du命令
查看>>
【excel技巧读书笔记004】在一个窗口显示多个工作薄
查看>>
我的Linux生涯之Mysql:[Mysql基础命令总结]
查看>>
学习PHP精粹,编写高效PHP代码之自动测试
查看>>
mysql索引
查看>>
centos7优化内核参数详解
查看>>