zoukankan      html  css  js  c++  java
  • tomcat配置文件server.xml详解

    Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。


    博客内容首发地址


    server.xml文件所在的位置

    ~/Tomcat的安装目录/conf/server.xml

    server.xml文件注释

    <!-- Server中的port监听关闭tomcat的请求,shutdown指定向端口发送的命令串-->  
    <Server port="8005" shutdown="SHUTDOWN" debug="0">  
    
       <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"  
                 debug="0"/>  
       <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"  
                 debug="0"/>  
    
       <GlobalNamingResources>  
         <Environment name="simpleValue" type="<a href="http://lib.csdn.net/base/javase" class='replace_word' title="Java SE知识库" target='_blank' style='color:#df3434; font-weight:bold;'>Java</a>.lang.Integer" value="30"/>  
         <Resource name="UserDatabase" auth="<a href="http://lib.csdn.net/base/docker" class='replace_word' title="Docker知识库" target='_blank' style='color:#df3434; font-weight:bold;'>Container</a>"  
                   type="org.apache.catalina.UserDatabase"  
            description="User database that can be updated and saved">  
         </Resource>  
         <ResourceParams name="UserDatabase">  
           <parameter>  
             <name>factory</name>  
       <!--value与Logger差不多prefix和suffix解释一样,className指定value使用的类名如:org.apache.catalina.values.AccessLogValve类可以记录应用程序的访问信息,directory指定log 文件存放位置,pattern有两值,common方式记录远程主机名或ip地址,用户名,日期,第一行请求的字符串,HTTP响应代码,发送的字节数。 combined方式比common记录更多-->  
             <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>  
           </parameter>  
           <parameter>  
             <name>pathname</name>  
             <value>conf/tomcat-users.xml</value>  
           </parameter>  
         </ResourceParams>  
       </GlobalNamingResources>  
    
       <Service name="Catalina">  
    
         <!-- Connector中的port创建服务器端的端口号,此端口监听用户端的请求  
    maxThreads最大可以创建请求的线程数  
    minSpareThreads服务启动时创建的处理请求的进程数  
    enableLookups如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址  
    redirectPort指定服务器正在处理http请求时收到一个SSL传输请求后重定向的端口号  
    acceptCount指定当处理请求线程都被使用时,可以放入处理队列的数目,超出将不进行处理  
    connectionTimeout指定超时的时间数(毫秒)-->  
     <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/>
    
         <Connector port="8080"  
                    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"  
                    enableLookups="false" redirectPort="8443" acceptCount="100"  
                    debug="0" connectionTimeout="20000"  
                    disableUploadTimeout="true" />  
    
         <Connector port="8009"  
                    enableLookups="false" redirectPort="8443" debug="0"  
                    protocol="AJP/1.3" />  
    <!--Engine指定缺省的处理请求主机名,需要有一个与host元素的name属性一致-->  
         <Engine name="Catalina" defaultHost="localhost" debug="0">  
           <!--logger中表示日志信息className为指定logger使用的类名此类必须实现 org.apache.catalina.Logger接口prefix指定log文件的前缀,suffix指定后缀,timestamp如果为true 则log文件名中加入时间-->  
           <Logger className="org.apache.catalina.logger.FileLogger"  
                   prefix="catalina_log." suffix=".txt"  
                   timestamp="true"/>  
        <!--Realm存放用户名密码及role<a href="http://lib.csdn.net/base/mysql" class='replace_word' title="MySQL知识库" target='_blank' style='color:#df3434; font-weight:bold;'>数据库</a>,className指定Realm使用的类名必须实现org.apache.catalina.Realm接口-->  
           <Realm className="org.apache.catalina.realm.UserDatabaseRealm"  
                      debug="0" resourceName="UserDatabase"/>  
            <!--host中name是指定的主机名或ip,appBase应用程序目录,unpackWARs如果为true则会自动解压war文件直接运行否则不解压-->  
       <Host name="192.168.4.247" debug="0" appBase="D:/project/hbgs_dddu/webapps"  
            unpackWARs="true" autoDeploy="true"  
            xmlValidation="false" xmlNamespaceAware="false">  
       <!--logger中表示日志信息className为指定logger使用的类名此类必须实现 org.apache.catalina.Logger接口prefix指定log文件的前缀,suffix指定后缀,timestamp如果为true 则log文件名中加入时间-->  
             <Logger className="org.apache.catalina.logger.FileLogger"  
                      directory="logs"   prefix="localhost_log.zx" suffix=".txt"  
                 timestamp="true"/>  
       <!--Context一个web应用程序通常为war文件,关于war的具体信息见servlet规范,docBase应用程序的路径或者war 文件的存放路径,path表示此web程序的url前缀,reloadable如果为true,Tomcat会自动检测应用程序的变化,自动装载新的应用程序,那么改变代码将不用再次重新启动tomcat-->  
       <Context path="" docBase="D:/project/hbgs_dddu/webapps" debug="0" reloadable="true"/>  
       </Host>  
         </Engine>  
       </Service>  
    </Server>  

    文件中单独节点的含义以及相关属性

    Server元素:

    是整个配置文件的根元素。表示整个Catalina容器。

    属性:

    className:实现了org.apache.catalina.Server接口的类名,标准实现类是org.apache.catalina.core.StandardServer类。

    Port:监听用于关闭Tomcat服务器命令的端口号。

    Shutdown:发送到端口上用于关闭Tomcat服务器的命令。

    如:

    <Serverport=”8005” shutdown=”SHUTDOWN”>

    Connector元素

    连接器,负责接收客户的请求,以及向客户端回送响应的消息。

    HTTP连接器:

    属性:

    protocol:值必须为HTTP1.1,如果使用AJP处理器,该值必须为AJP/1.3。

    proxyName:如这个连接器正在一个代理配置中被使用,指定这个属性,在request.getServerName()时返回。

    redirectPort: 如连接器不支持SSL请求,如收到SSL请求,Catalina容器将会自动重定向指定的端口号,让其进行处理。

    scheme:设置协议的名字,在request.getScheme()时返回,SSL连接器设为”https”,默认为”http”。

    secure:在SSL连接器可将其设置为true,默认为false。
    URIEncoding:用于解码URL的字符编码,没有指定默认值为ISO-8859-1。

    acceptCount:当所有的可能处理的线程都正在使用时,在队列中排队请求的最大数目。当队列已满,任何接收到的请求都会被拒绝,默认值为10。

    bufferSize:设由连接器创建输入流缓冲区的大小,以字节为单位。默认情况下,缓存区大的大小为2048字节。

    compressableMimeType:MIME的列表,默认以逗号分隔。默认值是text/html,text/xml,text/plain。

    compression:指定是否对响应的数据进行压缩。off:表示禁止压缩、on:表示允许压缩(文本将被压缩)、force:表示所有情况下都进行压缩,默认值为off。

    connectionTimeout:设置连接的超时值,以毫秒为单位。默认值为60000=60秒。

    maxHttpHeaderSize:HTTP请求和响应头的最大量,以字节为单位,默认值为4096字节。

    maxKeepAliveRequest:服务器关闭之前,客户端发送的流水线最大数目,默认值为100。

    maxSpareThreads:允许存在空闲线程的最大数目,默认值为50。

    minSpareThreads:设当连接器第一次启协创建线程的数目,确保至少有这么多的空闲线程可用。默认值为4。

    port:服务端套接字监听的TCP端口号,默认值为8080(必须)。
    socketBuffer:设Socket输出缓冲区的大小(以字节为单位),-1表示禁止缓冲,默认值为9000字节。

    如:

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

    AJP连接器

    用于将Apache与Tomcat集成在一起,当Apache接收到动态内容请求时,通过在配置中指定的端口号将请求发送给在此端口号上监听的AJP连接器组件。

    属性:

    backlog:当所有可能的请求处理线程都在使用时,队列中排队的请求最大数目。默认为10,当队列已满,任何请求都将被拒绝。

    maxSpareThread:允许存在空闲线程的最大数目,默认值为50。

    maxThread:最大线程数,默认值为200。

    minSpareThreads:设当连接器第一次启动时创建线程的数目,确保至少有这么多的空闲线程可用,默认值为4。

    port:服务端套接字的TCP端口号,默认值为8089(必须)。

    topNoDelay:为true时,可以提高性能,默认值为true。

    soTimeout:超时值。
    如:

    <!—Define an AJP1.3 Connector on port 8089-->
    <Connector port=”8089” enableLookups=”false” redirectPort=”8443” protocol=”AJP/1.3” />

    Engin元素

    为特定的Service处理所有的请示。每个Service只能包含一个Engine元素,它负责接收和处理此Service所有的连接器收到的请求,向连接发回响应,并最终显示在客户端。至少有一个元素,必须至少有一个属性的名字与defaultHost指定的名字相匹配。

    属性:

    className:实现org.apache.catalina.Engine接口,默认实现类为org.apache.catalina.core.StandardEngine类。

    defaultHost:默认主机名,值必须与的name值相匹配。这里写代码片

    name:指定Engine的逻辑名字(必须)。

    jvmRoute:在负载匀衡中使用的标识符,必须唯一。

    如:

    <Engine name=”Cataline” defaultHost=”localhst”>

     Host元素:

    表示一个虚拟主机,为特定的虚拟主机处理所有请求

    属性:
    appBase:设定应用程序的基目录,绝对路径或相对于%CATALINA_HOME%的路径名。

    autoDeploy:指示Tomcat运行时,如有新的WEB程序加开appBase指定的目录下,是否为自动布署,默认值为true。

    className:实现了org.apache.catalina.Host接口的类,标准实现类为org.apache.catalina.core.StandardHost类。

    deployOnStartup:Tomcat启动时,是否自动部署appBase属性指定目录下所有的WEB应用程序,默认值为true。

    name:虚拟主机的网络名(必须)。

    标准Host实现类org.apahce.catalina.core.StandardHost支持的附加属性:

    deployXML:为false将不会解析WEB应用程序内部的context.xml,默认值为true

    unPackWARs:虚拟主机指定临时读写使用的目录的路径名,不设,Tomcat会在%CATALINA_HOME%/work目录下提供一个合适的目录。

    如:

    <Host name=”localhst” appBase=”webapps” unpackWARs=”true” autoDeploy=”true” xmlValidation=”false” xmlNamespaceAware=”false”>

    配置虚拟主机:

    <Host name=”xxx” appBase=”c:/test”>
        <Contentpath=”” docBase=”e:/abe”/>
    </Host>

    context元素:

    一个WEB应用程序,处理当前WEB应用程序的所有请求,每一个Context必须使用唯一的上下文路径。

    属性:
    className:实现了org.apache.catalina.Context接口的类,标准实现类org.apache.catalina.core.StandardContext类。

    cookies:是否将Cookie应用于Session,默认值为true。

    crossContext:是否允许跨域访问,为true时,在程序内调用ServletContext.getContext()方法将返回一个虚拟主机上其它web程序的请求调度器。默认值为false,调 径用getContext()返回为null。

    docBase:绝对路径或相对于Host的appBase 属性的相对路径。

    privileged:为true,允许Web应用程序使用容器的Servlet。

    path:指定上下文路径。一个虚拟主机中,上下文路径必须唯一。

    reloadable:为true,Tomcat运行时,如果WEB-INF/classes和WEB-INF/lib目录中有改变,Tomcat会自动重新加载该WEB应用程序。虽方便,但开销也大,默认值为false,我们在项目开发时可以打开,项目发布后再关闭。

    cacheMaxSize:静态资源缓存最大值,以KB为单位,默认值为10240KB。

    cachingAllowed:是否允许静态资源缓存,默认为true。

    caseSensitive:默认为true,资源文件名大小写敏感,如果为false大小写不敏感。

    unpackWAR:默认为true,自动解压war包。

    workDir:为WEB应用程序内部的Servlet指定临时读写的目录路径名。如没有设置,则Tomcat会在%CATALINA_HOME%/work目录下提供一个合适的目录。

    如:

    <Content path=/abcdocBase=”d:/xyzreloadable=”true” />

    server.xml文件下载地址

    中文注释的server.xml文件

  • 相关阅读:
    Spring Boot全日志设置
    SpringBoot整合Quartz
    Kubernetes网络方案的三大类别和六个场景
    微服务化之缓存的设计
    金融创新业务基于容器云的微服务化实践
    致传统企业朋友:不够痛就别微服务,有坑 (1)
    致传统企业朋友:不够痛就别微服务,有坑 (2)
    The Beam Model:Stream & Tables翻译(上)
    细说Mammut大数据系统测试环境Docker迁移之路
    [译] 关于 SPA,你需要掌握的 4 层 (1)
  • 原文地址:https://www.cnblogs.com/haifeiWu/p/9079579.html
Copyright © 2011-2022 走看看