Tomcat的组件在<CATALINA_HOME>/conf/server.xml中进行配置,每个Tomcat组件在server.xml文件中对应一种配置元素,以下以xml代码方式表示各组件之间的关系:
<Server>
<Service>
<Connector/>
<Engine>
<Host>
<Context/>
</Host>
</Engine>
</Service>
</Server>
上面的xml元素分别代表着Tomcat的一种组件,以上元素可分为四类。
1、顶层类元素
顶层类元素包括<Server/>元素和<Service>元素,位于整个配置文件的最顶层。
2、连接器类元素
连接器类元素包含<Connector/>元素,代表了介于客户与服务器之间的通信接口。负责将客户的请求发送给服务器,并将服务器的响应结果传递给客户。
3、容器类元素
容器类元素包含<Engine/>元素、<Host/>元素和<Context/>元素,容器类元素代表处理客户请求并生成相应响应结果的组件。<Engine/>组件为特定的<Service/>组件处理所有的客户请求,<Host/>组件为特定的虚拟主机处理所有的客户请求,<Context/>组件为特定的WEB应用处理所有的客户请求。
4、嵌套类元素
嵌套类元素包含<Value/>元素、<Logger/>元素和<Realm/>元素。嵌套类元素代表了可以加入到容器的组件。
下面简要介绍一下各元素,具体配置在server.xml
1、<Server/>元素
<Server/>元素代表整个Catalina容器,它是Tomcat实例的顶层元素,<Server/>元素可以包含一个或多个<Service/>元素。
2、<Service/>元素
<Service/>元素包含一个<Engine/>元素和一个或多个<Connector/>元素,所有的<Connector/>元素共享一个<Engine/>元素。
3、<Connector/>元素
<Connector/>元素代表和客户请求实际交互的组件,它负责接收客户请求并向客户返回响应结果。
4、<Engine/>元素
每个<Service/>元素只能包含一个<Engine/>元素,<Engine/>元素可以包含一个或多个<Host/>元素。<Engine/>元素处理同一个<Service/>元素下所有的<Connector/>元素接收到的客户请求
5、<Host/>元素
<Host/>元素代表一个虚拟主机,一个<Host/>元素下可以包含一个或多个<Context/>元素对应的单个WEB应用。
6、<Context/>元素
<Context/>元素代表运行在<Host/>虚拟主机下的单个WEB应用,是使用最为频繁的元素。一个<Host/>元素下可以包含一个或多个<Context/>元素。
Tomcat各组件的嵌套关系,如下图:
这张结构图也是描述tomcat框架结构的,他从另一个维度来描述,通过网络端口来源,逐级分解结构,从图上我们可以看出,一个Server可以有多个 Service,但一个Service下面只能有一个Engine,一个Engine下面可以有多个Host,一个Host下面可以有多个 Context,数据流向也可以从图中获知,请求从Connector中开始,一直通过容器传递到Context中,再有Context传递给 Servlet,还有一个就是Server会启动一个ServerSocket来监听8005端口,负责监听是否要关闭Server