Tomcat的server.xml配置节点简介

系统 1646 0

 

Tomcat的server.xml配置节点简介

 

tomcat 的server.Xml 中的各个节点

Server 节点:
  Server 代表整个Catalina servlet 容器。在server.xml 配置文件中必须是顶层元素且唯一,给它配置的属性代表整个容器的属性。

Service 节点:
  service 由连接器connector 和共享的处理引擎(Engine)。

Connector 节点:
  Connector 分为http connector 和ajp3 connector,http connector 用 Http/1.1 协议 Connector 接侦听来自客户端浏览器的http 请求,此时tomcat 作为独立的web 服务器;ajp3 connector用ajp3 协议侦听来自其它Web 服务器的请求,此时tomcat 只作为servlet 容器。

Engine 节点:
  处理引擎(Engine)代表一个Service 所属的请求处理机,它接受所有连接器传递过来的客户端请求,将处理结果返回给连接器,由连接器将最终响应返回给客户端。Engine 必须配置在Service 组件下。处理引擎下 可以配置多个虚拟主机(Virtual Host),每个虚拟主机都有一个域名。当处理引擎获得一个请求时,它把该请求匹配到某个虚拟主机上,把请求交给该虚拟主机来处理。处理引擎有一个默认虚拟主机,当请求无法匹配到任何一个虚拟主机上时,交给默认虚拟主机来处理。

Host 节点:
  代表一个虚拟主机,每个虚拟主机和某个网络域名(Domain Name)相匹配。每个虚拟主机下都可以部署(deploy)一个或者多个Web 应用程序(Web Application),每个Web 应用程序对应于一个Context,有一个Context path。当虚拟主机获得一个请求时,将把该请求匹配到某个Context上,然后把该请求交给该Context来处理。匹配的方法是“最长匹配”,一个path=""的Context将成为该虚拟主机的默认Context。所有无法和其它Context的路径名匹配的请求都将最终和该默认Context匹配。在许多情况下,系统管理员希望将多个网络域名绑定到同一个虚拟主机,这就需要使用“主机别名”技术来实现。

Context节点:
  一个Context对应于一个Web应用程序,一个Web应用程序由一个或者多个Servlet组成。Context在创建的时候将根据配置文件$CATALINA_HOME/conf/web.xml 和$WebApp/Web-INF/web.xml 载入Servlet类。当Context获得请求时,将在自己的映射表(mapping table)中寻找相匹配的Servlet类。如果找到,则执行该类,获得请求的响应,并返回。

 

Cluster中的各个属性节点

tomcat 集群各节点通过建立tcp 链接来完成Session的拷贝,拷贝有同步和异步两种模式。在同步模式下,对客户端的响应必须在Session拷贝到其他节点完成后进行;异步模式无需等待Session拷贝完成就可响应。异步模式更高效,但是同步模式可靠性更高。同步异步模式由channelSendOptions参数控制,默认值是8,为异步模式,4是同步模式。在异步模式下,可以通过加上拷贝确认(Acknowledge)来提高可靠性,此时channelSendOptions设为10。

Manager节点:
  用来在节点间拷贝Session,默认使用DeltaManager,DeltaManager采用的一种all-to-all的工作方式,即集群中的节点会把Session数据向所有其他节点拷贝,而不管其他节点是否部署 了当前应 用。当集群中 的节点数 量很多并且部 署着不同 应用时,可以 使用BackupManager,BackManager仅向部署了当前应用的节点拷贝Session。但是到目前为止BackupManager并未经过大规模测试,可靠性不及DeltaManager。

Channel节点:
  负责对tomcat 集群的IO 层进行配置。Membership用于发现集群中的其他节点,这里的address用的是组播地址(Multicast address,),使用同一个组播地址和端口的多个节点同属一个子集群,因此通过自定义组播地址和端口就可将一个大的tomcat 集群分成多个子集群。Receiver用于各个节点接收其他节点发送的数据,在默认配置下tomcat 会从4000-4100间依次选取一个可用的端口进行接收,自定义配置时,如果多个tomcat节点在一台物理服务器上注意要使用不同的端口。Sender用于向其他节点发送数据,具体实现通过Transport配置,PooledParallelSender是从tcp 连接池中获取连接,可以实现并行发送,即集群中的多个节点可以同时向其他所有节点发送数据而互不影响。Interceptor有点类似下面将要解释的Valve,起到一个阀门的作用,在数据到达目的节点前进行检测或其他操作,如TcpFailureDetector用于检测在数据的传输过程中是否发生了tcp 错误。

Valve节点:
  用于在节点向客户端响应前进行检测或进行某些操作,ReplicationValve就是用于用于检测当前的响应是否涉及Session数据的更新,如果是则启动Session拷贝操作,filter用于过滤 请求,如客户端对图片,css,js 的请求就不会涉及Session,因此不需检测,默认状态下不进行过滤,监测所有的响应。JvmRouteBinderValve会在前端的Apache mod_jk发生错误时 保证同一客户端的请求发送到集群的同一个节点,tomcat 官方文档并未解释如何实现这一点。 

Deployer节点:
  用于集群的farm 功能,监控应用中文件的更新,以保证集群中所有节点应用的一致性,如某个用户上传文件到集群中某个节点的应用程序目录下,Deployer会监测到这一操作并把这一文件拷贝到集群中其他节点相同应用的对应目录下以保持所有应用的一致。这是一个相当强大的功能,不过很遗憾,tomcat 集群目前并不能做到这一点,开发人员正在努力实现它,这里的配置只是预留了一个接口。

Listener节点:
  用于跟踪集群中节点发出和收到的数据,也有点类似Valve的功能。

一个样例,直接贴上来:

      
        <?
      
      
        xml version='1.0' encoding='utf-8'
      
      
        ?>
      
      
        <!--
      
      
        

  Licensed to the Apache Software Foundation (ASF) under one or more

  contributor license agreements.  See the NOTICE file distributed with

  this work for additional information regarding copyright ownership.

  The ASF licenses this file to You under the Apache License, Version 2.0

  (the "License"); you may not use this file except in compliance with

  the License.  You may obtain a copy of the License at



      http://www.apache.org/licenses/LICENSE-2.0



  Unless required by applicable law or agreed to in writing, software

  distributed under the License is distributed on an "AS IS" BASIS,

  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

  See the License for the specific language governing permissions and

  limitations under the License.


      
      
        -->
      
      
        <!--
      
      
         Note:  A "Server" is not itself a "Container", so you may not

     define subcomponents such as "Valves" at this level.

     Documentation at /docs/config/server.html

 
      
      
        -->
      
      
        <
      
      
        Server 
      
      
        port
      
      
        ="8005"
      
      
         shutdown
      
      
        ="SHUTDOWN"
      
      
        >
      
      
        <!--
      
      
        APR library loader. Documentation at /docs/apr.html 
      
      
        -->
      
      
        <
      
      
        Listener 
      
      
        className
      
      
        ="org.apache.catalina.core.AprLifecycleListener"
      
      
         SSLEngine
      
      
        ="on"
      
      
        />
      
      
        <!--
      
      
        Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html 
      
      
        -->
      
      
        <
      
      
        Listener 
      
      
        className
      
      
        ="org.apache.catalina.core.JasperListener"
      
      
        />
      
      
        <!--
      
      
         Prevent memory leaks due to use of particular java/javax APIs
      
      
        -->
      
      
        <
      
      
        Listener 
      
      
        className
      
      
        ="org.apache.catalina.core.JreMemoryLeakPreventionListener"
      
      
        />
      
      
        <!--
      
      
         JMX Support for the Tomcat server. Documentation at /docs/non-existent.html 
      
      
        -->
      
      
        <
      
      
        Listener 
      
      
        className
      
      
        ="org.apache.catalina.mbeans.ServerLifecycleListener"
      
      
        />
      
      
        <
      
      
        Listener 
      
      
        className
      
      
        ="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
      
      
        />
      
      
        <!--
      
      
         Global JNDI resources

       Documentation at /docs/jndi-resources-howto.html

  
      
      
        -->
      
      
        <
      
      
        GlobalNamingResources
      
      
        >
      
      
        <!--
      
      
         Editable user database that can also be used by

         UserDatabaseRealm to authenticate users

    
      
      
        -->
      
      
        <
      
      
        Resource 
      
      
        name
      
      
        ="UserDatabase"
      
      
         auth
      
      
        ="Container"
      
      
        

              type
      
      
        ="org.apache.catalina.UserDatabase"
      
      
        

              description
      
      
        ="User database that can be updated and saved"
      
      
        

              factory
      
      
        ="org.apache.catalina.users.MemoryUserDatabaseFactory"
      
      
        

              pathname
      
      
        ="conf/tomcat-users.xml"
      
      
        />
      
      
        </
      
      
        GlobalNamingResources
      
      
        >
      
      
        <!--
      
      
         A "Service" is a collection of one or more "Connectors" that share

       a single "Container" Note:  A "Service" is not itself a "Container", 

       so you may not define subcomponents such as "Valves" at this level.

       Documentation at /docs/config/service.html

   
      
      
        -->
      
      
        <
      
      
        Service 
      
      
        name
      
      
        ="Catalina"
      
      
        >
      
      
        <!--
      
      
        The connectors can use a shared executor, you can define one or more named thread pools
      
      
        -->
      
      
        <!--
      
      
        

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" 

        maxThreads="150" minSpareThreads="4"/>

    
      
      
        -->
      
      
        <!--
      
      
         A "Connector" represents an endpoint by which requests are received

         and responses are returned. Documentation at :

         Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)

         Java AJP  Connector: /docs/config/ajp.html

         APR (HTTP/AJP) Connector: /docs/apr.html

         Define a non-SSL HTTP/1.1 Connector on port 8080

    
      
      
        -->
      
      
        <
      
      
        Connector 
      
      
        port
      
      
        ="8080"
      
      
         protocol
      
      
        ="HTTP/1.1"
      
      
         

               connectionTimeout
      
      
        ="20000"
      
      
         

               redirectPort
      
      
        ="8443"
      
      
        />
      
      
        <!--
      
      
         A "Connector" using the shared thread pool
      
      
        -->
      
      
        <!--
      
      
        

    <Connector executor="tomcatThreadPool"

               port="8080" protocol="HTTP/1.1" 

               connectionTimeout="20000" 

               redirectPort="8443" />

    
      
      
        -->
      
      
        <!--
      
      
         Define a SSL HTTP/1.1 Connector on port 8443

         This connector uses the JSSE configuration, when using APR, the 

         connector should be using the OpenSSL style configuration

         described in the APR documentation 
      
      
        -->
      
      
        <!--
      
      
        

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"

               maxThreads="150" scheme="https" secure="true"

               clientAuth="false" sslProtocol="TLS" />

    
      
      
        -->
      
      
        <!--
      
      
         Define an AJP 1.3 Connector on port 8009 
      
      
        -->
      
      
        <
      
      
        Connector 
      
      
        port
      
      
        ="8009"
      
      
         protocol
      
      
        ="AJP/1.3"
      
      
         redirectPort
      
      
        ="8443"
      
      
        />
      
      
        <!--
      
      
         An Engine represents the entry point (within Catalina) that processes

         every request.  The Engine implementation for Tomcat stand alone

         analyzes the HTTP headers included with the request, and passes them

         on to the appropriate Host (virtual host).

         Documentation at /docs/config/engine.html 
      
      
        -->
      
      
        <!--
      
      
         You should set jvmRoute to support load-balancing via AJP ie :

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">         

    
      
      
        -->
      
      
        <
      
      
        Engine 
      
      
        name
      
      
        ="Catalina"
      
      
         defaultHost
      
      
        ="localhost"
      
      
        >
      
      
        <!--
      
      
        For clustering, please take a look at documentation at:

          /docs/cluster-howto.html  (simple how to)

          /docs/config/cluster.html (reference documentation) 
      
      
        -->
      
      
        <!--
      
      
        

      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

      
      
      
        -->
      
      
        <!--
      
      
         The request dumper valve dumps useful debugging information about

           the request and response data received and sent by Tomcat.

           Documentation at: /docs/config/valve.html 
      
      
        -->
      
      
        <!--
      
      
        

      <Valve className="org.apache.catalina.valves.RequestDumperValve"/>

      
      
      
        -->
      
      
        <!--
      
      
         This Realm uses the UserDatabase configured in the global JNDI

           resources under the key "UserDatabase".  Any edits

           that are performed against this UserDatabase are immediately

           available for use by the Realm.  
      
      
        -->
      
      
        <
      
      
        Realm 
      
      
        className
      
      
        ="org.apache.catalina.realm.UserDatabaseRealm"
      
      
        

             resourceName
      
      
        ="UserDatabase"
      
      
        />
      
      
        <!--
      
      
         Define the default virtual host

           Note: XML Schema validation will not work with Xerces 2.2.

       
      
      
        -->
      
      
        <
      
      
        Host 
      
      
        name
      
      
        ="localhost"
      
      
          appBase
      
      
        ="webapps"
      
      
        

            unpackWARs
      
      
        ="true"
      
      
         autoDeploy
      
      
        ="true"
      
      
        

            xmlValidation
      
      
        ="false"
      
      
         xmlNamespaceAware
      
      
        ="false"
      
      
        >
      
      
        <!--
      
      
         SingleSignOn valve, share authentication between web applications

             Documentation at: /docs/config/valve.html 
      
      
        -->
      
      
        <!--
      
      
        

        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />

        
      
      
        -->
      
      
        <!--
      
      
         Access log processes all example.

             Documentation at: /docs/config/valve.html 
      
      
        -->
      
      
        <!--
      
      
        

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  

               prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>

        
      
      
        -->
      
      
        </
      
      
        Host
      
      
        >
      
      
        </
      
      
        Engine
      
      
        >
      
      
        </
      
      
        Service
      
      
        >
      
      
        </
      
      
        Server
      
      
        >
      
    

 

Tomcat的server.xml配置节点简介


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论