- TOMCAT的主要组件
如图:

-
Server
Server 组件是最外层的容器组件。包含了整个Servlet引擎的所有组件。当TOMCAT启动时,会由Server来启动所有组件,关闭时也是由Server来关闭所有组件。
-
Service
Service 在Server的内部,一个Server可以有多个Service,但是默认情况下只有一个。每个Service都包含了一个Servlet容器和连接器(Connector)。
-
Connector
Connector连接器,每一个连接器对应一种协议,类似HTTP,HTTPS,AJP等。随着TOMCAT的启动,每个连接器都会启动一个Socket服务端,接收请求。
-
Engine
Engine是Servlet引擎。整个Servlet容器的顶层元素。
-
Host
Host对应的是域名,他的父容器是Engine。一个Host下面可以存在多个Servlet应用,Host会去解析和部署在指定路径下Servlet应用。一般只会有一个Host。
-
Context
每一个Context对应一个Servlet应用。除了名为ROOT的应用,其他应用都必须有一个应用名。
-
Wrapper
Wrapper对应一个具体的Servlet处理过程。
我们可以从TOMCAT的默认配置文件Server.xml中印证组件之间的关系。
<!--这里剔除了一些无关的组件内容-->
<Server port="8005" shutdown="SHUTDOWN">
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1" redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/test" docBase="test"/>
</Host>
</Engine>
</Service>
</Server>
这里的每一个标签都对应了一个组件实例。从文件可以看到,Server.xml中已经包含了
1. Server 2. Service 3. Connector 4. Engine 5. Host 6.Context 六个组件。
那么剩余的Wrapper组件在哪里呢?
Wrapper比较特别,他并不由TOMCAT自身来定义,而是由Servlet应用开发者来定义。
每个Servlet应用都会有一个Web.xml文件。
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>Login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>Login</url-pattern>
</servlet-mapping>
</web-app>
文件中的 标签和 标签就对应了一个Wrapper。
最后需要说明的是:以上的7个组件只是TOMCAT的比较重要或者说比较基础的组件。其余的组件还有Session管理器,部署器,日志组件等等很多。
本文深入解析了Tomcat服务器的架构组成,包括Server、Service、Connector、Engine、Host和Context等核心组件的功能与关系,以及Wrapper组件如何由Servlet应用定义。
942

被折叠的 条评论
为什么被折叠?



