Tomcat中各组件介绍
2018-03-02 16:38
441 查看
转载地址:http://blog.csdn.net/vba_2001/article/details/7184759
XML配置文件结构
<Server> 顶层类元素:一个配置文件中只能有一个<Server>元素,可包含多个Service。
<Service> 顶层类元素:本身不是容器,可包含一个Engine,多个Connector。
<Connector/> 连接器类元素:代表通信接口。
<Engine> 容器类元素:为特定的Service组件处理所有客户请求,可包含多个Host。
<Host> 容器类元素:为特定的虚拟主机处理所有客户请求,可包含多个Context。
<Context> 容器类元素:为特定的Web应用处理所有客户请求。
</Context>
</Host>
</Engine>
</Service>
</Server>
本文简单介绍一下Tomcat中的各种组件。
1、Server
代表整个Tomcat实例,在JVM中是单例的,它还负责管理包含的Service组件的生命周期;下图是对Server组件的一个简单描述:
可以在server.xml文件是对Server组件进行配置;
可配置的属性有:name, shutdown port, shutdown command, class name等;
shutdown port默认为8005;
shutdown command默认为SHUTDOWN;出于安全,只能从同一台服务器发出SHUTDOWN命令;
提供JNDI的实现,可以放任意对象(如DataSource,环境变量等);
2、Service
Service组件代表的是一组请求处理组件;一个Server实例可以包含多个Service实例,每个Service实例与一组Connector实例和单个Engine实例相关联;
单Service实例一般够用了;如果需要针对不同的IP或Port使用不同的Service组件来处理,则可以使用多Service实例;
3、Connector
Connector组件把Engine从不同的通信协议中隔离出来,如HTTP,HTTPS,AJP等;
可以配置Tomcat的工作模式:Standalone & Conjuction;
在Standalone模式中,Tomcat可以配置HTTP/HTTPS的Connector,它既要处理静态内容,也要委托Engine处理动态内容;
在Conjunction模式中,客户端是Apache或是IIS之类的Web Server;当Web Server决定将请求转交给Tomcat处理时,它通过AJP协议与Tomcat交互;AJP协议是基于二进制流的,比HTTP更高效一些;
关于Connector的几个重要点:
监听的IP和Port;
处理请求的最大线程数;如果所有线程都忙,则会丢弃新的请求;
所有的Connector接收到请求后,转换成统一的模式,再交给唯一的Engine处理;Engine负责处理请求并产生响应;
Connector将Engine产生的响应按合适的协议发送到客户端;
4、Engine
其实就是Servlet Engine;一个Service组件只能包含一个Engine组件;但一个Engine可以包含多个Host组件;
它接收代表请求和响应的对象,然后将工作委托给相应的Host组件进行处理;如果没有找到对应的Host组件,则委托给default Host来处理;
5、Host
两个重要点:
domain name:每个Host必须要有一个唯一的domain name;浏览器发过来的请求头里包含有该domain name;domain name在Engine里必须是唯一的;
app base folder:发布到该Host里的应用的目录名;可以是相对CATALINA_BASE的相对路径也可以是文件系统的绝对路径;
当Host获得一个针对特定Host请求时,将会在该Host环境下把请求匹配到对应的Context上;然后把请求交给这个Context来处理;
6、Context
一个 Context对应一个Web Application;它由多个Servlet组成;在创建Context时,将根据conf/web.xml和webapps/${context path}/WEB-INF/web.xml加载Servlet并创建映射表;
Document Base:存放war或解压后的context的地方;
Context Path:唯一标志一个Context;当没有匹配任何一个Context时,默认的Context将会处理该请求;默认的Context的Context Path为空;
Automatic Reload:一旦监测到Context有修改,则会自动重启Context;只用于开发模式;
7、Wrapper
Wrapper是Context的子元素,代表了一个Servlet(或一个JSP被编译后的Servlet);它负责加载Servlet、实例化Servlet、以及触发生命周期方法的调用,如init(), service(), destory()方法;另外,Wrapper也负责调用与Servlet相关的Filter;
Tomcat处理一个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
XML配置文件结构
<Server> 顶层类元素:一个配置文件中只能有一个<Server>元素,可包含多个Service。
<Service> 顶层类元素:本身不是容器,可包含一个Engine,多个Connector。
<Connector/> 连接器类元素:代表通信接口。
<Engine> 容器类元素:为特定的Service组件处理所有客户请求,可包含多个Host。
<Host> 容器类元素:为特定的虚拟主机处理所有客户请求,可包含多个Context。
<Context> 容器类元素:为特定的Web应用处理所有客户请求。
</Context>
</Host>
</Engine>
</Service>
</Server>
本文简单介绍一下Tomcat中的各种组件。
1、Server
代表整个Tomcat实例,在JVM中是单例的,它还负责管理包含的Service组件的生命周期;下图是对Server组件的一个简单描述:
可以在server.xml文件是对Server组件进行配置;
可配置的属性有:name, shutdown port, shutdown command, class name等;
shutdown port默认为8005;
shutdown command默认为SHUTDOWN;出于安全,只能从同一台服务器发出SHUTDOWN命令;
提供JNDI的实现,可以放任意对象(如DataSource,环境变量等);
2、Service
Service组件代表的是一组请求处理组件;一个Server实例可以包含多个Service实例,每个Service实例与一组Connector实例和单个Engine实例相关联;
单Service实例一般够用了;如果需要针对不同的IP或Port使用不同的Service组件来处理,则可以使用多Service实例;
3、Connector
Connector组件把Engine从不同的通信协议中隔离出来,如HTTP,HTTPS,AJP等;
可以配置Tomcat的工作模式:Standalone & Conjuction;
在Standalone模式中,Tomcat可以配置HTTP/HTTPS的Connector,它既要处理静态内容,也要委托Engine处理动态内容;
在Conjunction模式中,客户端是Apache或是IIS之类的Web Server;当Web Server决定将请求转交给Tomcat处理时,它通过AJP协议与Tomcat交互;AJP协议是基于二进制流的,比HTTP更高效一些;
关于Connector的几个重要点:
监听的IP和Port;
处理请求的最大线程数;如果所有线程都忙,则会丢弃新的请求;
所有的Connector接收到请求后,转换成统一的模式,再交给唯一的Engine处理;Engine负责处理请求并产生响应;
Connector将Engine产生的响应按合适的协议发送到客户端;
4、Engine
其实就是Servlet Engine;一个Service组件只能包含一个Engine组件;但一个Engine可以包含多个Host组件;
它接收代表请求和响应的对象,然后将工作委托给相应的Host组件进行处理;如果没有找到对应的Host组件,则委托给default Host来处理;
5、Host
两个重要点:
domain name:每个Host必须要有一个唯一的domain name;浏览器发过来的请求头里包含有该domain name;domain name在Engine里必须是唯一的;
app base folder:发布到该Host里的应用的目录名;可以是相对CATALINA_BASE的相对路径也可以是文件系统的绝对路径;
当Host获得一个针对特定Host请求时,将会在该Host环境下把请求匹配到对应的Context上;然后把请求交给这个Context来处理;
6、Context
一个 Context对应一个Web Application;它由多个Servlet组成;在创建Context时,将根据conf/web.xml和webapps/${context path}/WEB-INF/web.xml加载Servlet并创建映射表;
Document Base:存放war或解压后的context的地方;
Context Path:唯一标志一个Context;当没有匹配任何一个Context时,默认的Context将会处理该请求;默认的Context的Context Path为空;
Automatic Reload:一旦监测到Context有修改,则会自动重启Context;只用于开发模式;
7、Wrapper
Wrapper是Context的子元素,代表了一个Servlet(或一个JSP被编译后的Servlet);它负责加载Servlet、实例化Servlet、以及触发生命周期方法的调用,如init(), service(), destory()方法;另外,Wrapper也负责调用与Servlet相关的Filter;
Tomcat处理一个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
相关文章推荐
- Tomcat 之 tomcat安装和组件介绍
- Tomcat各组件关系及server.xml配置文件介绍
- Tomcat各组件关系及server.xml配置文件介绍
- Tomcat中各组件介绍
- Tomcat Context 组件介绍(转载)
- Tomcat组件介绍
- tomcat的service.xml的各个组件的介绍
- tomcat整体结构及组件介绍
- Tomcat 组件介绍
- Android系统架构分析 和 Android应用程序组件介绍
- Office组件介绍
- Ext.form.Panel表单面板各组件介绍
- netty基本组件介绍
- 日志组件logback的介绍及配置使用方法
- Tomcat简介及组成介绍(1)
- Android学习之四大组件简单介绍
- 关于eclipse环境下配置tomcat插件的介绍
- 四大组件之一 --Services介绍和使用
- Struts控制器组件简单介绍
- tomcat8组件编程模式