首页 > 代码库 > Tomcat内部结构及工作原理学习

Tomcat内部结构及工作原理学习

Tomcat原本是Servlet/JSP的一个调试工具,后来才发展为一个Servlet/JSP的容器。

Tomcat作为Servlet容器,负责处理客户请求,把请求传送给Servlet并把结果返回给客户。

Servlet容器与Servlet接口是由Java Servlet API定义的。

技术分享

 

Tomcat的四种组件

每个元素都代表了一个种Tomcat组件,它们可以分成四类:

第一种:顶层类元素

比如Server和Service

第二种:连接器类元素

连接器类元素代表了介于客户与服务之间的通信接口,负责将客户的请求发送给服务器,并将服务器的响应传递给客户。

第三种:容器类元素

容器类元素代表处理客户请求并生成响应结果的组件,有三种容器类元素:Engine、Host和Context。Engine为特定的Service组件处理所有客户的请求,Host组件为特定的虚拟主机处理所有的客户请求。Context组件为特定的Web应用处理所有的客户请求。

第四种:嵌套类元素

嵌套类元素代表了可以添加到容器中的组件,比如<Logger>元素、<Valve>元素和<Realm>元素。

技术分享

Server代表整个Catalina Servlet容器,它是Tomcat实例的顶层元素,其中可以包含一个或者多个Service元素。

Service元素中包含一个Engine元素,以及一个或者个多个Connector元素,这些Connector共享同一个Engine元素。

Connector元素代表和客户程序实际交互的组件,它负责接受客户的请求,以及向客户返回响应结果。

每个Service元素只能包含一个Engine元素,Engine元素可以处理在同一个Service中所有Connector元素接受到的客户请求。

一个Engine元素中可以包含多个Host元素,每个Host元素定义了一个主机,它可以包含一个或者多个Web应用。

Context是使用得最频繁的元素,每个Context元素代表了运行在虚拟机上的单个Web应用,一个Host元素中可以包含多个Context元素。

Tomcat内部工作原理

技术分享

从图中可以看出来,Connector负责接受客户的请求并向客户返回响应,在同一个Service中,多个Connector共享一个Engine。同一个Engine有多个Host,同一个Host有多个Context。

这里只是简单的介绍一下Tomcat的工作原理,但是内部比这个还是要复杂得多,以后再学习咯。

Tomcat内部结构及工作原理学习