1、通过startup.sh脚本调用catalina.sh如截图代码:
2、通过catalina.sh脚本调用tomcat启动类:BootStrap.java的start方法
3、在start方法中判断类加载器是否已经创建,如果没有创建调用init()方法初始化类加载器,并创建java.lang.ClassLoader的子类对象(org.apache.catalina.startup.Catalina)
4、然后执行Catalina对象的start方法(通过反射),如图所示:
5、创建digester处理器,完成对应对象的实例化以及创建等。并初始化Server对象:具体解释:https://www.jianshu.com/p/8d9a6ae40303
6、在Catalina对象中的start()方法,调用getServe()方法,获取Server对象。具体方法:load()
7、然后getServer()调用服务的start方法,启动server,并在服务中调用service的启动方法,启动对应的service。