目录
一、tomcat启动原理
1、在catalina.bat启动文件中,指定了启动类MAINCLASS=org.apache.catalina.startup.Bootstrap和启动命令ACTION=start。
2、然后通过执行Bootstrap类的main方法,对传入的start命令进行判断,从而执行相应的操作,源码如下:
start代码分支的3行代码,分别做了三件事情:
(1)阻塞当前的非守护线程;
(2)通过反射,初始化调用Catalina类里面的createStartDigester方法,加载server.xml配置文件,并创建解析器;同时创建servler.xml文件中server、service、connector、engine
、host、context等标签对应的组件对象StandardServer、StandardService、StandardEngine等;
(3)设置生命周期状态值为STARTING,并开启各个组件,完成启动。
二、tomcat关闭原理
1、命令方式关闭
和启动原理类型,通过stop命令,进入main方法的stop分支执行stopServer方法。stopServer方法首先加载server.xml文件进行解析,获取组件对象和服务端口信息,然后再进行关闭;
2、idea按钮关闭
jvm收到停止当前线程的中端消息,后台调用CatalinaShutdownHook线程类进行关闭操作,最终还是调用的Catalina类的stop方法进行关闭,源码如下: