目录
一、Tomcat工作原理
Tomcat 是一个能够处理请求并产生响应的应用程序。Tomcat实现类javaEE平台下的一些技术规范,所以我们可以在Tomcat中运行我们所编写的Servlet、JSP。
二、Tomcat架构图
三、Tomcat组件
1)Server组件:
启动一个server实例(即一个JVM进程),他监听在8005端口以接收shutdown命令,Server的定义不能使用同一个端口,这意味着如果在同一个物理机上启动了多个Server实例,必须配置他们使用不同的端口。
<Server port="8005" shutdown="SHUTDOWN">
port:指的是接收shutdown指令的端口,默认为8005;
shutdown:指的是发往此Server用于实现关闭tomcet实例的命令字符串,
默认为SHUTDOWN;
注意:一个应用可以抢占多个端口,但是多个应用不能在一个端口中。
2)Service组件:
主要用于关联一个引擎和与此引擎相关的连接器,每个连接器通过一个特定的端口和协议接收请求并将其转发至关联的引擎进行处理。因此,Service要包含一个引擎、一个或多个连接器。
3)Connector组件:
支持处理不同请求的组件,一个引擎可以有一个或多个连接器,以适应多种请求方式。默认值开启了处理Http协议的连接器。如果需要使用其他协议,需要在Tomcat中配置该协议的连接器。
在Tomcat中连接器类型通常有4种:
- HTTP连接器
- SSL连接器
- AJP连接器
- proxy连接器
<Connector port="8888" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
port:监听的端口
protocol:连接器使用的协议,默认为HTTP/1.1;
connectionTimeout:等待客户端发送请求的超时时间,单位为毫秒
redirectPort:如果某连接器支持的协议是HTTP,当接收客户端发来的HTTPS请求时,则转发至此属性定义的端口;
maxThreads:支持的最大并发连接数,默认为200个;
4)Engine组件:
是Service处理的一个实例,及servlet引擎,定义在server.xml中的Service标签中,Engine需要defaultHost属性来为其定义一个接受所有发往非明确定义虚拟主机的请求的Host组件。
<Engine name="Catalina" defaultHost="localhost">
name:Engine组件的名称
defaultHost:Tomcat支持基于FQDN(Fully Qualified Domain Name 全限定域名)的虚拟主机,这些虚拟主机可以通过在Engine容器中定义多个不同的Host组件来实现;但如果此引擎的连接器收到一个发往非明确定义虚拟主机的请求时则需要将此请求发往一个默认的虚拟主机进行处理,因此,在Engine中定义的多个虚拟主机的主机名名称中至少要有一个跟defaultHost定义的主机名称同名。
5)Host组件:
虚拟主机:
虚拟主机或称共享主机,又称虚拟服务器,是一种在单一主机或主机群上,实现多网络服务的方法,可以运行多个网点或服务的技术。
Host组件位于Engine容器中用于接收请求并进行相应处理的虚拟主机,通过该容器可以运行Servlet或者JSP来处理请求。
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
</Host>
name:虚拟主机的名称,Tomcat通过在请求URL中的域名和name中的值匹配,用于查找能够处理该请求的虚拟主机。如果未找到则交给在Engine中defaultHost制定的主机处理。
appBase:此Host的webapps目录,即指定存放web应用程序的目录的路径。
autoDeploy:在Tomcat处于运行状态时放置于appBase目录中的应用程序文件是否自动进行deploy;默认为true;
uppackWARs:在启动此webapps是是否对WAR格式的归档文件先进行展开,默认为true
6)Context组件
Context是Host子组件,代表指定一个Web应用,它运行在某个制定的虚拟主机(Host)上;每个Web应用都是一个WAR文件,或文件目录。
<Context path="/test" docBase="D:\test\test.war"/>
path:context path即浏览器访问项目的访问路径
docBase:相应的Web应用程序的存放位置;也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径;