Tomcat 内部运行原理
Posted Think_Higher
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat 内部运行原理相关的知识,希望对你有一定的参考价值。
文章目录
一、目的
宏观上看
Tomcat 作为一个 「Http 服务器 + Servlet 容器」,对我们屏蔽了应用层协议和网络通信细节,给我们的是标准的 Request 和 Response 对象;对于具体的业务逻辑则作为变化点,交给我们来实现。我们使用了SpringMVC 之类的框架,可是却从来不需要考虑 TCP 连接、 Http 协议的数据处理与响应。就是因为 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 内部运行原理的主要内容,如果未能解决你的问题,请参考以下文章