Tomcat源码解读--代码走读之(四十八中的2-4)connector.getService().getContainer().getPipeline().g...
1、获取service为StandardService[Catalina]
2、获取container为StandardEngine[Catalina]
3、获取pipeline为Pipeline[StandardEngine[Catalina]]
4、GetFirst()为org.apache.catalina.core.StandardEngineValve[Catalina],步骤如下
(1)、内容如下,获取host和host的pipeline的getFirst
(2)、host的pipeline如下
(3)、pipeline的getFirst为org.apache.catalina.valves.AccessLogValve[localhost]进行
(4)、(3)的getNext为
(5)、org.apache.catalina.valves.ErrorReportValve[localhost]的invoke为
(6)、(5)的getNext为
(7)、org.apache.catalina.core.StandardHostValve[localhost]的invoke主要进行
(8)、(7)的pipeline为
(9)、(8)的getFirst为
(10)、org.apache.catalina.core.StandardContextValve[]的invoke为主要进行
(11)、(10)的wrapper为Wrapper wrapper = request.getWrapper();
(12)、(11)的getPipeline为
(13)、(12)的getFirst为
(14)、(13)org.apache.catalina.core.StandardWrapperValve[jsp]的invoke主要进行
1)、wrapper的设置
2)、context的设置
3)、servlet的设置,进行初始化servlet的init方法。
4)、Create the filter chain forthis request factory的设置
5)、filterChain.doFilter
(request.getRequest(),response.getResponse());执行doFilter
6)、5)执行过后执行servlet.service(request,response);就是执行具体的serlvet的service,doGet,doPost之类的。
7)、Deallocatethe allocated servlet instance
(15)、(14)-(10)-(7)-(5)-(3)-(1)之后的收尾工作。