`
javaplan
  • 浏览: 55210 次
  • 性别: Icon_minigender_1
  • 来自: world
社区版块
存档分类
最新评论

Tomcat的结构概述

阅读更多
1.Tomcat的结构概述
    Tomcat服务器是由一系列可配置的组件构成,其核心组件是Catalina Servlet容器,它是所有其他Tomcat组件的顶层容器。Tomcat的组件可以在<CATALINA_HOME>/conf/server.xml文件中进行配置,每个Tomcat的组件在server.xml文件中对应一种配置元素.一下代码以XML的形式展示了各种Tomcat组件之间的关系:
<Server>
    <Service>
        <Connector/>
        <Engine>
            <Host>
                <Context>
                </Context>
            </Host>
        </Engine>
    </Service>
</Server>
    在以上XML代码中,每个元素都代表一种Tomcat组件.这些元素分四类:
    1.顶层类元素    顶层类元素包括<Server>元素和<Service>元素,他们位于整个配置文件的顶层.
    2.连接器类元素    连接器类元素代表了介于客户与服务之间的通信接口,负责将客户的请求发送给服务器,并将服务器的响应结果传递给客户.
    3.容器类元素    容器类元素代表处理客户请求并生成响应结果的组件,有3种容器类元素,它们是Engine,Host和Context. Engine组件为特定的Service组件处理所有客户请求,Host组件为特定的虚拟主机处理所有客户请求,Context组件为特定的Web应用处理所有客户请求.
    4.嵌套类元素    嵌套类元素代表了可以加入到容器中的组件,如<Logger>元素、<Valve>元素和<Realm>元素,这些元素将在后面的做介绍。
    下面,再对一些基本的Tomcat元素进行介绍。如果要了解这些元素,可以参考附录A(Server.xml文件)。
    <Server>元素
    代表了整个Catalina Servlet容器,它是Tomcat实例的顶层元素.可包含一个或多个<Service>元素.
    <Service>元素
    包含一个<Engine>元素,以及一个或多个<Connector>元素,这些<Connector>元素共享同一个<Engine>元素.
    <Connector>元素
    代表和客户程序实际交互的组件,他负责接收客户请求,以及向客户返回响应结果.
    <Engine>元素
    每个<Service>元素只能包含一个<Engine>元素. <Engine>元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求.
    <Host>元素
    一个<Engine>元素中可以包含多个<Host>元素.每个<Host>元素定义了一个虚拟主机,它可以包含一个或多个Web应用.
    <Context>元素
    每个<Context>元素代表了运行虚拟主机上的但个Web应用.一个<Host>元素中可以包含多个<Context>元素.
 
2. Tomcat的服务器配置文件server.xml
    Tomcat服务器是由一系列可配置的组件构成,Tomcat的组件可以在<CATALINA_HOME>\conf\server.xml文件中进行配置,每个Tomcat组件和server.xml文件中的一种配置元素对应.下面就一些常用的元素做了介绍.关于server.xml的更多信息,可以参考Tomcat的文档:
    <CATALINA_HOME>/webapps/tomcat-docs/config/index.html
    下面是一个server.xml文件的样例:
-----------------------------------------------------------------------------------
<!-- Example Server Configuration File -->
 
<Server port="8005" shutdown="SHUTDOWN" debug="0">
  <Service name="Catalina">
    <Connector port="8080"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000"
               disableUploadTimeout="true" /> 
    <Engine name="Catalina" defaultHost="localhost" debug="0"> 
       <Logger className="org.apache.catalina.logger.FileLogger"
              prefix="catalina_log." suffix=".txt"
              timestamp="true"/> 
       <Realm className="org.apache.catalina.realm.MemoryRealm"/> 
       <Host name="localhost" debug="0" appBase="webapps"
             unpackWARs="true" autoDeploy="true">                           
           <Valve className="org.apache.catalina.valves.AccessLogValve"
                  directory="logs" prefix="localhost_access_log." suffix=".txt"
                  pattern="common" resolveHosts="false"/> 
           <Logger className="org.apache.catalina.logger.FileLogger"
                   directory="logs"  prefix="localhost_log." suffix=".txt"
                   timestamp="true"/>       
               <Context path="/sample" docBase="sample" debug="0" reloadable="true">                           
                   <Resource name="jdbc/BookDB"
                             auth="Container"
                             type="javax.sql.DataSource"/>                                  
                   <ResourceParams name="jdbc/BookDB">                                  
                        <parameter>
                             <name>factory</name>
                             <vlaue>org.apache.commons.dbcp.BasicDataSourceFactory</value>
                        </parameter>                                         
                        <parameter>
                             <name>maxActive</name>
                             <value>100</value>
                        </parameter>                                         
                        <parameter>
                             <name>maxIdle</name>
                             <value>30</value>
                        </parameter>                                                
                        <parameter>
                             <name>maxWait</name>
                             <value>10000</value>
                        </parameter>                                         
                        <parameter>
                             <name>username</name>
                             <value>dbuser</value>
                        </parameter>                                         
                        <parameter>
                             <name>password</name>
                             <value>1234</value>
                        </parameter>                                         
                        <parameter>
                             <name>driverClassName</name>
                             <value>com.mysql.jdbc.Driver</value>
                        </parameter>                                         
                        <parameter>
                             <name>url</name>
                             <value>jdbc:mysql://localhost:3306/BookDB?autoReconnect=true</value>
                        </parameter>                                         
                  </ResourceParams>                                  
              </Context>                           
          </Host>                    
      </Engine>             
  </Service>   
  <Service name="Apache">
      <Connector prot="8009"
                 enableLookups="false" redirectPort"8443" debug="0"
                 protocol="AJP/1.3"/>                           
      <Engine name="Apache" defaultHost="localhost" debug="0">                       
          <Logger className="org.apache.catalina.logger.FileLogger"
                  prefix="apache_log." suffix=".txt"
                  timestamp="true"/>                                  
          <Realm className="org.apache.catalina.realm.MemoryRealm"/>                    
      </Engine> 
  </Service>
</Server>
 
-----------------------------------
下面,对基本的Tomcat元素逐一介绍。 
1. 配置Server元素

   <Server>元素代表了整个Catalina Servler容器,它是Tomcat实例的顶层元素,由org.apache.catalina.Server接口来定义.<Server>元素中可以包含一个或者多个<Service>元素,但<Server>元素不能作为任何其他元素的子元素.范例代码中定义的<Server>元素如下:
     <Server port="8005" shutdown="SHUTDOWN" debug="0">
    <Server>属性含义:
--------------------------------------------------------------
    className  :指定实现org.apache.catalina.Server接口的类,默认值为org.apache.catalina.core.StandardServer.
    port       :指定Tomcat服务器监听shutdown命令的端口.终止Tomcat服务运行时,必须在Tomcat服务器所在的机器上发出Shutdown命令.该属性是必须设定的.
    shutdown   :指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性是必须设定的.
2. 配置Service元素

    <Service>元素由org.apache.catalina.Service接口定义,它把韩一个<Engine>元素,以及一个或多个<Connector>元素,这些<Connector>元素共享一个<Engine>元素. 例如,在范例文件中配置了两个<Service>元素

    <Service name="Catalina">
  name="Apache">
    第一个<Service>处理所有直接由Tomcat服务器接收的Web客户请求,第二个<Service>处理由Apache服务器转发过来的Web客户请求.

   <Service    <Service>属性含义:
--------------------------------------------------------------
    className  :指定实现org.apache.catalina.Service接口的类,默认值为org.apache.catalina.core.StandardService.
    name       :定义Service的名字.
3. 配置Engine元素

    <Engine>元素由org.apahe.catalina.Engine接口定义. 每个<Service>元素只能包括一个<Engine>元素. <Engine>元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求. 例如,在范例server.xml文件中配置了一下的<Engine>元素:

    <Engine name="Catalina" defaultHost="localhost" debug="0"> 

    <Engine>属性含义:
--------------------------------------------------------------
    className  :指定实现org.apache.catalina.Engine接口的类,默认值为org.apache.catalina.core.StandardEngine.
    name       :定义Engine的名字.

    在<Engine>元素中可以包含如下的子元素:
        <Logger>
        <Realm>
        <Valve>
        <Host>
4. 配置Host元素

    <Host>元素由org.apache.catalina.Host接口定义.一个<Engine>元素可以包含多个<Host>元素.每个<Host>元素定义了一个虚拟主机,它可以包含一个或多个Web应用. 例如,在样例server.xml中配置了以下<Host>元素:

       <Host name="localhost" debug="0" appBase="webapps"
             unpackWARs="true" autoDeploy="true"> 

    以上代码定义了一个名为localhost的虚拟主机,Web客户访问它的URL为: http://localhost:8080/

    <Host>属性含义:
--------------------------------------------------------------
    className    :指定实现org.apache.catalina.Host接口的类,默认值为org.apache.catalina.core.StandardHost.
    appBase      :指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于<CATALINA_HOME>的相对目录. 如果此项没有设定,默认值为<CATALINA_HOME>/webapps.
    unpackWARs   :如果此项设为true,表示将把Web应用的WAR文件先展开为开放目录结构后再运行.如果设为false,将直接运行WAR文件.
    autoDeploy   :如果此项设为true,表示当Tomcat服务器处于运行状态时,能够监测appBase下的文件,如果有新的Web应用加入进来,会自动发布这个Web应用.
    alias        :指定虚拟主机的别名,可以指定多个别名.
    deployOnStartup :如果此项设为true,表示Tomcat服务器启动时会自动发布appBase目录下的所有Web应用,如果Web应用在server.xml中没有相应的<Context>元素,将采用Tomcat默认的Context. deployOnStartup的默认值为true.
    name         :定义虚拟主机的名字.}

    在<Host>元素中可以包含如下的子元素:
        <Logger>
        <Realm>
        <Valve>
        <Context>
5. 配置Context元素

    <Context>元素由org.apache.catalina.Context接口定义. <Context>元素是使用最频繁的元素. 每个<Context>元素代表了运行在虚拟主机上的单个Web应用. 一个<Host>元素中可以包含多个<Context>元素. 例如, 在样例server.xml文件中配置了以下<Context>元素:

               <Context path="/sample" docBase="sample" debug="0" reloadable="true">   

    <Context>属性含义:
--------------------------------------------------------------
    className   :指定实现org.apache.catalina.Context接口的类,默认值为org.apache.catalina.core.StandardContext.
    path        :指定访问该Web应用的URL入口.
    docBase     :指定Web应用的文件路径.可以给定绝对路径,也可以给定相对于Host的appBase属性的相对路径. 如果Web应用采用开放目录结构,那就指定Web应用的根目录;如果Web应用是个WAR文件,那就指定WAR文件的路径.
    reloadable  :如果这个属性设为true,Tomcat服务器在运行状态下会监视在WEB-INF/class和WEB-INF/lib目录下CLASS文件的改动.如果检测到有calss文件被更新,服务器会自动重新加载Web应用.
    cookies     :指定是否通过Cookie来支持Session,默认为true.
    useNaming   :指定是否支持JNDI,默认为true.

    在<Context>元素中可以包含如下的子元素:
        <Logger>
        <Realm>
        <Valve>
        <Resource>
        <ResourceParams>
6. 配置Connector元素

    <Connector>元素由org.apache.catalina.Connector接口定义.<Connector>元素代表与客户程序实际交互的组件,它负责接收客户的请求,以及向客户返回响应结果.例如, 在样例server.xml文件中配置了两个<Connector>元素:

   

      prot="8009"
               
 enableLookups="false" redirectPort"8443" debug="0"
                 protocol="AJP/1.3"/>      

    第一个<Connector>元素定义了一个HTTP Connector,它通过8080端口接收HTTP请求;
    第二个<Connector>元素定义了一个JK Connector,它通过8009端口接收由其他HTTP服务器(如Apache服务器)转发过来的客户请求.

    所有的<Connector>元素都具有一些共同的属性,这些属性如下:
<Connector
  <Connector port="8080"
              
   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                 enableLookups="false" redirectPort="8443" acceptCount="100"
                 debug="0" connectionTimeout="20000"
                 disableUploadTimeout="true" /> 
    <Connector>属性含义(共同属性):
--------------------------------------------------------------
    className      :指定实现org.apache.catalina.Connector 接口的类,默认值为org.apache.catalina.core.StandardConnector.
    enableLookups  :如果设为true,表示支持域名解析,可以把IP地址解析为主机名.Web应用调用request.getRemostHost方法将返回客户的主机名.该属性默认值为true.
    redirectPort   :指定转发端口.如果当前端口只支持non-SSL请求,在需要安全通信的场合,将把客户请求转发到基于SSL的redirectPort的端口.

    HttpConnector的属性描述如下:
--------------------------------------------------------------
    calssName      :指定实现org.apache.catalina.Connector接口的类,默认值为org.apache.coyote.tomcat5.CoyoteConnector.
    enableLookups  :同上.
    redirectPort   :同上.
    prot           :设定TCP/IP断口号,默认为8080.
    address        :如果服务器有两个以上IP地址,该属性可以设定端口监听的IP地址,默认情况下,端口会监听服务器上所有IP地址.
    bufferSize     :设定由端口创建的输入流的缓存大小,默认值为2048byte.
    protocol       :设定HTTP协议,默认值为HTTP/1.1.
    maxThreads     :设定处理客户请求的线程的最大数目,这个值也决定了服务器可以同时响应客户请求的最大数目,默认值为200.
    acceptCount    :设定在监听端口队列中的最大客户请求数,默认值为10. 如果队列已满,客户请求将被拒绝.
    connectionTimeout :定义建立客户连接超时的时间,以毫秒为单位.如果设置为-1,表示不限制建立客户连接的时间.

    JK Connector 的属性如下:
--------------------------------------------------------------
    className      :指定实现org.apache.catalina.Connector接口的类,默认值为org.apache.coyote.tomact5.CoyoteCnnector.
    enableLookups  :同上.
    redirectPort   :同上.
    port           :设定AJP端口号.
    protocol       :必须设定为AJP/1.3协议.


 
分享到:
评论

相关推荐

    Tomcat 结构概述

    Tomcat 结构概述 Tomcat 服务器的整体架构是由一系列可配置的组件构成的,其核心组件是 Catalina Servlet 容器,它是所有其他 Tomcat 组件的顶层容器。Tomcat 的组件可以在(conf/server.xml 文件中进行配置,每个 ...

    tomcat概述和体系架构

    在结构上,Tomcat的顶层类元素包括`&lt;Server&gt;`和`&lt;Service&gt;`,连接器类元素负责通信接口,而容器类元素则分为`Engine`、`Host`和`Context`,它们分别负责处理请求、特定虚拟主机请求和特定Web应用请求。所有的Tomcat...

    Tomcat目录结构及其说明

    ### Tomcat目录结构及其说明 #### 一、概述 Apache Tomcat是一款开源的Servlet容器,主要用来运行Java Web应用程序。其目录结构清晰有序,每个目录都有特定的功能与用途,为开发者提供了良好的部署环境。了解...

    Tomcat5的目录结构

    ### Tomcat5的目录结构详解 #### 一、概述 Apache Tomcat是一款开源的Servlet容器,主要用于部署Java Web应用程序。Tomcat支持最新的Servlet和JSP规范,并且由于其开源、轻量级的特点,在中小型项目中得到了广泛的...

    Tomcat目录结构及其说明.doc

    ### Tomcat目录结构详解 #### 一、概述 Apache Tomcat是一款开源的Servlet容器,它实现了Servlet和JavaServer Pages (JSP)技术规范,并提供了作为Web服务器的一些特性,但其主要用于解析Servlet。Tomcat的目录结构...

    tomcat目录结构详解

    #### 一、Tomcat目录概述 Tomcat服务器是一款开源的Servlet容器,主要用于执行Java Servlet和渲染JSP(Java Server Pages)。它由Apache软件基金会的Jakarta项目开发,提供了轻量级的Web服务环境,支持多种操作系统...

    Tomcat参考手册中文版chm

    一、Tomcat概述 Apache Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,它实现了Java Servlet和JavaServer Pages(JSP)规范。Tomcat以其轻量级、高效和易于管理的特性,成为了许多小型到中型企业级应用的...

    tomcat 架构 分析

    一、Tomcat整体架构概述 Tomcat架构具有模块化特性,其核心部分由两个组件构成:Connector(连接器)和Container(容器)。这两者在Tomcat中扮演着极其重要的角色。Connector组件负责接收客户端的请求,它在Tomcat...

    windows下tomcat7

    一、Tomcat 7概述 Tomcat 7是Apache软件基金会的Jakarta项目中的一个核心组件,它遵循Java Servlet和JavaServer Pages规范。Tomcat以其小巧、高效和开源的特点,成为许多小型和中型企业级应用服务器的选择。Tomcat 7...

    apache-tomcat-8.0.3

    一、Apache Tomcat概述 Apache Tomcat是由Apache软件基金会维护的项目,它是Java Servlet和JSP规范的主要实现之一。作为轻量级应用服务器,Tomcat相比其他全功能的应用服务器如JBoss或WebLogic,体积更小,启动更快...

    Apache-tomcat-7.0.109-Windows-x64

    在本文中,我们将深入探讨与"Apache-tomcat-7.0.109-Windows-x64"相关的知识,包括Tomcat的概述、版本7.0.109的特点、在Windows 64位系统上的安装与配置,以及Java环境的设置等关键内容。 首先,让我们了解Tomcat的...

    官方原版tomcat-9.0.29 64位

    1. **Tomcat 9.0.29概述**: Tomcat 9.0.29是Apache Tomcat服务器的一个稳定版本,发布于2019年11月29日。它遵循Java EE 8规范,支持Servlet 4.0、JSP 2.3和EL 3.0等技术。这个版本包含了一系列的bug修复、安全更新...

    tomcat5.5.12.rar

    一、Tomcat 5.5.12概述 Tomcat 5.5.12是Apache Tomcat 5.5系列的一个稳定版本,发布于2007年,它遵循Java Servlet 2.4和JavaServer Pages (JSP) 2.0规范。此版本在性能和稳定性上进行了优化,同时修复了前几个版本...

    Tomcat目录详解

    一、Tomcat 服务器概述 Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。 二、Tomcat 目录...

    Tomcat的基础知识

    #### Tomcat概述 Tomcat,由Apache软件基金会的Jakarta项目开发,是一款免费且开源的Servlet容器。它不仅支持Servlet技术,同时也兼容JavaServer Pages(JSP)技术,使得开发者能够轻松地构建和部署Java Web应用程序...

    How Tomcat Works中文

    本书详细介绍了Tomcat 4.1.12和5.0.18两个版本的内部结构与运作原理,尤其着重于解释Catalina——Tomcat的Servlet容器的核心组成部分。 #### 二、Tomcat的复杂性及组成 Tomcat作为一个功能强大的应用服务器,其...

    tomcat源码基于6.0

    2. **容器结构**:Tomcat采用了一种基于容器的层次结构,包括Engine(引擎)、Host(主机)、Context(上下文)和Wrapper(封装器)。每个级别都包含一个或多个下一级别的容器,从而实现多应用、多域名的部署。 3. ...

    tomcat3源码包

    1. **Tomcat概述** Tomcat是一个开源的Java Servlet容器,最初由James Duncan Davidson设计,后来成为Apache软件基金会的项目。Tomcat3主要遵循Servlet 2.2和JSP 1.1规范,是理解Web服务器如何处理HTTP请求并生成...

Global site tag (gtag.js) - Google Analytics