Tomat源码学习(二)
Tomat6的整体架构 上面我们从模块组件的角度,简单介绍了Tomcat的子模块划分及其相应的功能。下面我们简单以图示意之。 ![]()
从上面的Tomcat子模块示意图中,我们可以看到,来自客户端的请求首先由Connector子模块进行处理,然后根据情况或者发送到第三方的Web服务器,或者转发到Jsper模块进行处理,或者转发到Jsp/Servlet子模块处理。总体说来,Tomcat通过下面三种方式处理来自客户端的请求: (1) 如果客户端发出静态页面请求,如果没有配置第三方Web服务器,此时客户端的请求直接交由Coyote Connector子模块处理,然后返回结果;如果配有第三方应用服务器,那么客户的请求直接由第三方应用服务器响应,然后返回静态记过页面。客户端请求的执行过程如图中绿线所示。 (2) 如果客户端请求Jsp页面,该请求首先转发到发送Coyote连接器(在没有配置第三方Web服务器的情况下),或者经过第三方Web服务器将客户请求转发到JK连接器;然后该Jsp请求将交给Jsper子模块处理,Jsper将根据情况验证编译该Jsp页面,最后由Jsp/Servlet模块对客户请求进行处理。Jsp请求处理完毕,服务器首先把响应结果发送给连接器子模块,连接器子模块根据情况或将响应结果页面发送到第三方Web服务器,或者直接发送响应结果页面到客户端。 (3) 如果客户请求Servlet,Tomcat的处理流程和Jsp页面的请求执行流程基本类似,只不过少了一个Jsper子模块处理罢了。
转自:http://carllgc.blog.ccidnet.com/blog-htm-do-showone-uid-4092-type-blog-itemid-272088.html
|