1、Tomcat源码阅读之初始化流程梳理

最近有了点空闲,看tomcat的书和相关的网上资料,总是有点模模糊糊的,于是就有了要读一读源码的想法,经过一天的阅读,目前整理了一个小流程,当然,其中很多的配置文件的加载和解析,没有在这里写。

1、先从Bootstrap.java的main函数开始运行,然后进行各种参数的初始化,最后运行到41行的 daemon.start();这个方法,这个方法是正式开始进行运行的,这个方法会调用到Catalina.java中的start方法,
2、进入到Catalina.start方法中,重点是 ((Lifecycle) getServer()).start()这个方法,进行了启动,前面的都是为了start的准备
3、然后进入到StandardServer这个类的start方法中进行初始化的一些操作,然后进行操作
4、 StandardServer这个类的 ((Lifecycle) services[i]).start();748行的地方,这个地方是Server开始运行service,然后进入到StandardService类中,找到start方法
5、查看StandardService的start方法, ((Lifecycle) connectors[i]).start();第536行的地方,进行连接的启动
6、进入到Connector这个类中,查看start()这个方法, protocolHandler.start();第1099行的地方,进行各种协议的连接的处理,因为是通过反射的,因此,如果是调用了http协议进行的操作,那就会调用到Http1Protocol
7、此处Http1Protocol的start方法,会进行一个  endpoint.start();第203行的调用,就是一个启用新的线程的操作,跳转到JIoEndpoint.java中的start()方法
8、查看start方法,是一个多线程的类,因此看352行  Socket socket = serverSocketFactory.acceptSocket(serverSocket);  //这里是监听http请求的地方   serverSocketFactory.initSocket(socket);
9、连接会阻塞在这里,等待有连接来,可以打上断点,此时可以输入http://localhost:8080/这个网址,可以看到建立连接了,后面怎么处理请求的问题,以后有空再进入下一步研究
另外,源码里面的基本上都是用的接口反射进行调用,写的确实不错,

********************************欢迎各位大拿拍砖********************************************

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值