Tomcat基本组件及其功能

1. Tomcat Connector

Tomcat Connector是Tomcat中的一个重要的组件,它负责监听到达Tomcat的请求,并将这些 请求转换成Servlet规范中所定义的Request,然后将转换后的请求交给Engine组件去处理,最后将Engine返回的Response返回给客户端。

Tomcat服务器通过Connector连接器组件与客户程序建立连接,Connector组件负责接收客户的请求,以及把Tomcat服务器的响应结果发送给客户。默认情况下,Tomcat在server.xml中配置了两种连接器:

<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080-->

    <Connector port="8080"
               maxThreads="150" 
      minSpareThreads="25" 
      maxSpareThreads="75"
               enableLookups="false"
      redirectPort="8443" 
      acceptCount="100"
               debug="0" 
      connectionTimeout="20000" 
               disableUploadTimeout="true" />

    <!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->

    <Connector port="8009" 
               enableLookups="false"
      redirectPort="8443" debug="0"
               protocol="AJP/1.3" /> 


第一个连接器监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。

第二个连接器监听8009端口,负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时,就需要用到这个连接器

2. Tomcat Host组件

Tomcat Host组件在Tomcat中代表一个"Virtual Host",使Tomcat可以在单个Tomcat实例中支持多个"Virtual Host",这样,我们也就可以知道

一个Engine可以包含多个Host组件.

我们先来了解下什么是Host。我们知道,在我们访问一个网站时,我们需要在浏览器的地址栏输入一个网页地址,浏览器会试图将域名解析成P,这个IP代表了连接到互联网的一台主机(Host)。在浏览器向主机发送的HTTP请求中,也包含了请求的Host信息

在最简单的情况下,一台主机只需要对应一个IP,提供一个web服务即可,这种情况下一个IP就对应一台物理主机(Physical Host)。然而,在

多数情况下,一台主机不会只提供一个web服务,因而一台物理主机就需要虚拟出多台主机来,这就是Virtual Host。Virtual Host根据实现技

术的不同可以分为基于名称的Virtual Host和基于IP的Virtual Host。

基于名称的Virtual Host
基于名称的Virtual Host,对于基于名称的Virtual Host来说,每一个Virtual Host对应一个域名,这些域名都解析到同一个IP下去,这样,

这些Virtual Host就共享了这个IP对应的物理主机的资源,在Tomcat中,主要配置以下信息就配置了一个基于名称的Virtual Host:
<Host name="localhosts"  appBase="webapps"    unpackWARs="true" autoDeploy="true"    xmlValidation="false" 
xmlNamespaceAware="false"> </Host> 


当然,在Tomcat中,如果多个Virtual Host仅仅名称是不一样的,其他都是一样的,那么就可以使用别名来配置,如下图:

<Host name="localhosts" 
  appBase="webapps" 
  unpackWARs="true" 
  autoDeploy="true" 
  xmlValidation="false"   xmlNamespaceAware="false">
  <Alias>khotyn.org</Alias> 
</Host> 


基于IP的Virtual Host
不同于基于名称的Virtual Host,在基于IP的Virtual Host中,可以将多个IP地址绑定到同一台物理主机上去,这个是怎么做到的呢?一个方式在物理主机上配置多块网卡,另一个就是通过Virtual Network Interfaces来实现,在Tomcat中配置基于IP的Virtual Host,可以参考下图

中的配置:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000"        

redirectPort="8443" executor="tomcatThreadPool" address="127.0.0.2" useIPVHosts="true"/> 

注意,需要将Connector的useIPVHosts设置成true,默认情况为false,才能够使用基于IP的Virtual Host。

3. Tomcat Context组件


Context代表一个Web应用,它运行在某个指定的虚拟主机(Host)上;每个Web应用都是一个WAR文件,或是一个包含WAR解压后的文件的目录;

Connector组件接收到http请求后,通过将请求URI的最长可能前缀与每个Context的path进行匹配,然后选择相应的Web应用来处理这个http请求。之后,Context会根据web application deployment descriptor文件中定义的servlet映射,会选择一个正确的Servlet来处理请求。Servlet映射必须定义在该Web应用目录层次结构中的/WEB-INF/web.xml中


4. Tomcat Engine组件

Tomcat Engine组件是一个职责相当简单的组件,他的主要作用就是决定从Connecter过来的请求应该交给哪一个Host来处理




猜你喜欢

转载自ssh-2009-126-com.iteye.com/blog/1068095
今日推荐