Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在很多项目和程序中得到应有,在我们正式使用Tomcat之前,最好能够了解Tomcat的整体结构。
Server组件是最顶级的组件,它代表Tomcat的运行实例,在一个JVM中只会包含一个Server。在Server的整个生命周期中,Server组件中的Listener组件实现事件的监听并完成相应的任务,此外Server中包含的GlobalNamingResources组件是为了方便在Tomcat中集成JNDI。除了这两个组件,Server的核心组件就是Service组件
Service是服务的抽象,它代表请求从接收到处理的所有组件的集合,一个Server组件可以包含多个Service组件,每一个Service组件都包含了若干的用于接受客户端消息的Connector组件和处理请求的Engine组件以及一些Executor组件。其中不同的Connector组件使用不同的通信协议,如Http协议和AJP协议等。Executor组件是一个线程池,主要是为Service内的所有组件提供任务所需的线程池。
Connector组件:Connector组件的主要职责就是接受客户端的连接并且接受消息报文,消息报文经由Connector的解析之后送往Container组件处理。Tomcat可以处理Http协议和AJP协议等,因此Connector的分类主要由Http和AJP两种协议的Connector组件。Service组件和Connector组件的关系图如下:
,此外,Connector组件中还包含有Mapper组件和CoyoteAdapter组件。 Mapper组件:客户端请求的路由导航组件,通过它能够对一个完整的请求地址进行路由,从而根据请求地址找到对应的Servlet。 CoyoteAdapter组件:一个将Connector和Container适配起来的适配器。
Tomcat内部有4个级别的容器,分别是Engine、Host、Context和Wrapper。
Engine组件:
Engine代表全局的Servlet引擎,每一个Service组件只能包含一个Engine容器组件,但是一个Engine组件可以包含多个Host组件,除了Host组件之外,还包含以下的组件。
Host组件:
Tomcat中Host组件代表的是虚拟主机,其中存放着若干的抽象的Web应用。Host组件除了包含Context组件之外还包含以下的组件:
Context组件:
Context组件是Web应用的抽象,其包含了各种静态资源、若干Servlet(Wrapper容器)以及各种其他动态资源。其除了包含主要的Wrapper组件之外还包括以下的组件:
Mapper组件:Servlet映射器,负责Context容器内部请求的路由导航
Wrapper组件:
一个Wrapper组件对应着一个Servlet,其主要包含以下的组件:
代码小兵86504-19 19:55
代码小兵49806-21 15:40
代码小兵69607-21 11:32
代码小兵87207-21 12:51