1.Tomcat 各组件逻辑图(网络引用)
说明:1.由于此图是之前网上转的,但后面调试源码后觉得其后注释说明部分的关系线并不实际存在,而是由各组件的上下层关系维持.不知道原图上这几条线是否也是这个意思.
2.由于一个Engine可以有多个Host,一个Host也可以有多个Context,而一个Engine和Host却只有一个pipeline,从这个角度去看,图国的注释的关系线也不可能存在.
2.Tomcat 启动时序
从上面的DeBug视图可以大概看清楚Tomcat启动程序上的执行过程,现主要说一个Digester解析Server.xml文件,生成各组件(StandardServer,StandardService,StandardEngine,StandardHost,StandardContext等相关对象)实例,组装以上对象并启动的过程
1.Catalina.createStartDigester方法:(Digester通过sax方式解析Server.xml)生成Server.xml中配置的各组件对象(此成并成形成逻辑关系),并通过Rule设置各组件在逻辑上的层次关系(此时的关系只存在Digester对象的).
2.Digester.startElement方法:调用各Rule实现类(如:ObjectCreateRule,SetNextRule)的begin方法,当遇到不同的组件时,生成相应的对象(反射),并依次栈中.
3.Digester.endElement方法:调用各Rule实现类(如:ObjectCreateRule,SetNextRule)的end方法,当遇到不同的组件时,设置相应的上下层关系.(此时各组件还未启动).
3.Tomcat BIO处理Http请求逻辑
(未完待继)