Tomcat源码初识(tomcat流程)
- tomcat启动类Bootstrap,启动时会执行这个类里面的main方法
- 创建Bootstrap对象,执行init方法
- 初始化classloaders,三个加载器加载路径在conf/catalina.properties中定义(默认catalinaLoader与sharedLoader没有设置,两个类加载器默认都是commonLoader,如果设置了,父类是commonLoader),然后sharedLoader是后期加载项目中的class的父类加载器,有共享的class或者jar,可以配在这
- 通过反射创建Catalina对象(catalinaLoader.loadClass(“org.apache.catalina.startup.Catalina”))
- 设置tomcat容器父加载器 Catalina.setParentClassLoader(sharedLoader)
- load: Catalina.load()责任链模式,一层往下一层执行
- 加载conf.server.xml
- 将xml解析成对象,digester.parse(inputSource)
- 一个tomcat对应一个Server,Server下包含多个Service,每个Service包含多个Connector和一个Engine,每个Engine下包含多个Host,每个Host对应一个文件夹下的项目,每个项目被包装成StandardContext,每个项目都有自己的listener,filter,servlet,每个servlet包装成wrapper对象,结构如下图
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自fault`s blog
评论 ()