在windows系统中,点击startup.bat即可启动,那么启动之后,做了哪些操作呢?
(1)调用BootStrap组件的main()方法启动,在startup.bat批处理脚本中,调用了catalina.bat的批处理脚本,而在catalina.bat批处理脚本中,又调用了BootStrap组件。最后是通过BootStrap的main()方法来启动加载的。如图所示:
(2)调用main()方法的时候,会先去调用init()方法进行初始化,去加载类加载器需要的东西.
(3)然后调用load()方法,这个时候,load方法会去调用另外一个组件catalina组件,catalina是整个容器的名称,
(4)catalina容器在加载的时候会去创建一个Server,这个Server就是tomcat服务器本身,并且调用init方法进行初始化.
(5)server在初始化的时候,会调用service的init()方法,原因是一个server下面可以有多个service。
(6)根据流程图依次去调用各个组件的init方法.父容器在初始化的时候,去调用子容器的init初始化方法.
(7)在service组件调用到Context的init()方法初始化之后,会调用init()方法,在这个init()方法中,去初始化了Executor,这个executor是java并发包下面的,是线程池。即初始化了线程池.
(8)service再次调用init()方法,初始化Connector连接器组件
(9)connector组件调用了ProtocolHandler的init()方法,这个handler就是前面提到的,会去创建一个endpoint,而在这个endpoint中,就绑定了tomcat需要去监听的端口. 就是我们再tomcat的配置文件中配置的connector中的port端口,8080和8009
(10)在所有的初始化工作完成之后,bootstrap调用start方法,依次启动各个组件。
总结: 加载配置文件
初始化容器组件
监听对应的端口
准备接受客户端请求