Tomcat配置与优化( 二 )


Tomcat配置与优化

文章插图
Tomcat与Apache整合
 
4.EngineEngine组件在Service组件有且只有一个;Engine是service组件中的请求处理组件 。Engine组件从一个或多个Connector中接收并处理,并将完成的响应返回给Connector,最终传递给客户端 。
前面说到,Engine、Host和Context都是容器,但是它们不是平行关系,而是父子关系:Engine包含Host,Host包含Context 。
<Server port="8005" shutdown="SHUTDOWN"><Service name="Catalina"><Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /><Engine name="Catalina" defaultHost="localhost"></Engine></Service></Server>其中name属性用于日志和错误信息,在整个Server中应该是唯一的 。defalutHost属性指定了默认的host名称,当发往本机的请求指定的host名称不存在时,一律使用defaultHost指定的host进行处理;因此defaultHost的值,必须与Engine中的一个Host组件的name属性值匹配 。
5. Host
(1)Engine和Host
Host是Engine的子容器 。Engine组件中可以内嵌1个或者多个Host组件,每个Host组件代表Engine中的一个虚拟主机 。Host组件至少有一个,且其中一个的name必须与Engine组件中的defaultHost属性相匹配 。
(2)Host的作用
Host虚拟主机的作用,是运行多个Web应用(一个Context代表一个Web应用),并负责安装、展开、启动、结束每个Web应用 。
Host组件代表的虚拟主机,对应服务器中一个网络名实体(如"www.test.com"或IP地址"116.25.25.25");为了使用户可以通过网络名连接Tomcat服务器,这个名字应该在DNS服务器上注册 。
客户端通常使用主机名来标识它们希望连接的服务器,该主机名也会包含在HTTP请求头中,Tomcat从HTTP头中提取出主机名,寻找名字匹配的主机 。如果没有匹配,请求会发送至默认的主机 。因此默认主机不需要再DNS服务器中注册网络名,因为任何与所有Host名称不匹配的请求,都会路由至默认主机 。
(3)Host的配置
在第一部分的例子中,Host配置如下:
<Server port="8005" shutdown="SHUTDOWN"><Service name="Catalina"><Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" 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"></Host></Engine></Service></Server>name属性指定虚拟主机的主机名,一个Engine有且只有一个Host组件的name属性和Engine组件的defaultHost属性相匹配;一般情况下,主机名需要是在DNS服务器中注册网络名,但是Engine指定的defaultHost不需要 。
unpackWARs指定了是否将代表Web应用的WAR文件解压;如果是true,通过解压后的文件结构运行该Web应用,如果是false,直接使用WAR文件运行Web应用 。
6.Context
(1)Context的作用
Context元素代表在虚拟主机上运行的一个Web应用 。在后文中,提到Context、应用或Web应用,他们都代指Web应用,每个Web应用基于WAR文件,或WAR文件解压后对应的目录(这里称为应用目录)
Context是Host的子容器,每个Host都可以定义任意多的Context元素 。
若是自动部署(即autoDeploy="true"),那么server.xml配置文件中没有Context元素的配置 。这是因为Tomcat开启了自动部署,Web应用没有在server.xml中配置静态部署,而是由Tomcat通过特定的规则自动部署 。
(2)Web的自动部署
要开启Web应用的自动部署,需要配置所在的虚拟主机;配置的方式就是在配置Host元素的deployOnStartup和autoDeploy属性 。如果deployOnStartup和autoDeploy设置为true,则tomcat启动自动部署:当检测到新的Web应用或Web应用更新时,会触发应用的部署(或重新部署) 。二者的主要区别在于
  • deployeOnStartup为true时,Tomcat在启动时检查Web应用,且检测到所有的Web应用都视作新应用;
  • autoDeploy为true时,Tomcat在运行时定期检查新的Web应用或Web应用的更新;
通过配置deployOnStartup和autoDeploy可以开启虚拟主机自动部署Web应用;实际上,自动部署依赖于检查是否有新的或更改过的Web应用,而Host元素中的appBase和xml配置设置了检查web应用更新的目录 。


推荐阅读