关于Tomcat运行原理的一些分析

来源:互联网 发布:土木工程词典 知乎 编辑:程序博客网 时间:2024/05/16 08:26
前言:Tomcat作为Sun公司官方推荐的jsp和Servlet容器越来越多的受到原件公司和开发人员的喜爱。今天就Tomcat的组成部分和运行原理进行一些讨论。
一、Tomcat的各个组件是在/conf/server.xml中配置的。
<server>顶层类元素,包含多个service
<service>顶层类元素,包含一个Engin和多个Connector
<connector port="8080" protocol="HTTP/1.1">链接类容器,代表通信接口
<connector port="8009" protocol="AJP/1.3">
<Engine>容器元素,为Service处理客户请求,含多个Host
<Host>容器元素,为Host处理客户请求,含多个Context
<Context>为web应用处理客户请求
</service>
</server>
一个java web应用在tomcat中与一个Context对应,是一一对应关系
二、Tomcat Server处理一个http请求的过程

假设来自客户的请求为:http://localhost:8080/wsota/wsota_index.jsp
1)请求被发送到本机端口8080 ,被在那里监听的coyote HTTP/1.1 Connector 获得
2)Connector把该请求交给他所在的service的的Engine来处理,并等待来自Engine的回应。
3)Engine获得请求localhost/wsota/wsota_index.jsp,匹配他所拥有的所有虚拟主机Host
4) Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)
5) localhost Host获得请求/wsota/wsota_index.jsp,匹配它所拥有的所有Context
6) Host匹配到路径为/wsota的Context(如果匹配不到就把该请求交给路径名为""的Context去处理)
7) path="/wsota"的Context获得请求/wsota_index.jsp,在它的mapping table中寻找对应的servlet
8) Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类
9) 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法
10)Context把执行完了之后的HttpServletResponse对象返回给Host
11)Host把HttpServletResponse对象返回给Engine
12)Engine把HttpServletResponse对象返回给Connector
13)Connector把HttpServletResponse对象返回给客户browser



原创粉丝点击