您的位置:首页 > 运维架构 > Tomcat

tomcat源码阅读笔记二——初始化过程(下)

2018-03-03 22:43 411 查看
一 .在StandardServer中,调用initInternal()方法。
    在此过程,1.初始化了globalNamingResources(此globalNamingResources在catalina初始化的时候被加载到jvm),



作为全局的资源共享,里面保存的东西如图:



2.之后用向上找到URLClassLoader,用此URLClassLoader 加载所有jdk中的jar包,放到ExtendsionValidator中的containerManifestResources中。



3.然后启动所有的services



二.在service启动过程中,调用initInternal()方法,此方法做了如下事情:
1.启动此service所指向的Container(catalina初始化的时候用digester加载到jvm的StandardEngine),



及初始化StandardEngine,调用其initInternal方法,开启了一个可以异步执行操作的的线程池,供之后在startInternal()中启动StandardHos StandardContext StandardWrapper用,如图:



2.然后初始化StandardThreadExecutor,



3.初始化connectors



    在connector初始化过程中,做了如下的事情:
    3.1创建connector与container链接的桥梁CoyoteAdapter



    3.2协议处理器初始化(Http11Protocol  Http11NioProtocol  Http11AprProtocol,可在server.xml中指定其中一种)



    以默认的bio阻塞模式(Http11Protocl)为例:
    3.2.1 把此协议处理器注册到Registry中,3.2.2 初始化endPoint,及初始化一个ServerSocket,等待网络请求

    3.3初始化mapperListener (connector与主机地址host的映射)



至此,所有的初始化完成,之后开始startInternal过程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: