• Tags ,
  •         
  • www.breakyizhan.com
  •    

    server.xml是Tomcat中最重要的配置文件,server.xml的每一个元素都对应了Tomcat中的一个组件;通过对xml文件中元素的配置,可以实现对Tomcat中各个组件的控制。因此,学习server.xml文件的配置,对于了解和使用Tomcat至关重要。

    Tomcat 是一个 HTTP 服务器。也是一个servlet 容器,可以执行 Java Servlet,将 JavaServer Page(JSP)和 JavaServerFaces(JSF)转换为 Java Servlet。Tomcat 采用了层次化和模块化的架构,如下:

     

    Tomcat下Server.xml配置注释说明

    <Server port="8005" shutdown="SHUTDOWN">  
    <!-- 属性说明 
    ---- port:指定一个端口,这个端口负责监听关闭Tomcat的请求 
    ---- shutdown:向以上端口发送的关闭服务器的命令字符串 -->  
    <Listener className="org.apache.catalina.core.AprLifecycleListener" />  
    <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />  
    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />  
    <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>  
    <GlobalNamingResources>  
    <Environment name="simpleValue" type="java.lang.Integer" value="30"/>  
    <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>  
    <!-- 
    每个Service元素只能有一个Engine元素.
    元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求 
    -->  
    <Service name="Catalina">  
    <!-- 属性说明 name:Service的名称 -->  
    <!--  
    Connector元素:  
    由Connector接口定义.<Connector>元素代表与客户程序实际交互的组件,它负责接收客户请求,以及向客户返回响应结果.  
    -->  
    <Connector port="80" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />  
    <!-- 属性说明 
    -------- port:服务器连接器的端口号,该连接器将在指定端口侦听来自客户端的请求。
    -------- enableLookups:如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名; 若为false则不进行DNS查询,而是返回其ip地址。 
    -------- redirectPort:服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号。 
    -------- acceptCount:当所有可以使用的处理请求的线程都被用光时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,而返回Connection refused错误。 
    -------- connectionTimeout:等待超时的时间数(以毫秒为单位)。 
    -------- maxThreads:设定在监听端口的线程的最大数目,这个值也决定了服务器可以同时响应客户请求的最大数目.默认值为200。 
    -------- protocol:必须设定为AJP/1.3协议。 
    -------- address:如果服务器有两个以上IP地址,该属性可以设定端口监听的IP地址,默认情况下,端口会监听服务器上所有IP地址。 
    -------- minProcessors:服务器启动时创建的处理请求的线程数,每个请求由一个线程负责。 
    -------- maxProcessors:最多可以创建的处理请求的线程数。 
    -------- minSpareThreads:最小备用线程 。 
    -------- maxSpareThreads:最大备用线程。 
    -------- debug:日志等级。
    -------- disableUploadTimeout:禁用上传超时,主要用于大数据上传时。 
    -------- allowTrace:是否允许HTTP的TRACE方法,默认为false 
    -------- emptySessionPath:如果设置为true,用户的所有路径都将设置为/,默认为false。 
    -------- enableLookups:调用request、getRemoteHost()执行DNS查询,以返回远程主机的主机名,如果设置为false,则直接返回IP地址。 
    -------- maxPostSize:指定POST方式请求的最大量,没有指定默认为2097152。 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 
    -------- useBodyEncodingForURI:主要用于Tomcat4.1.x中,指示是否使用在contentType中指定的编码来取代URIEncoding,用于解码URI查询参数,默认为false 
    -------- xpoweredBy:为true时,Tomcat使用规范建议的报头表明支持Servlet的规范版本,默认为false 
    -------- acceptCount:当所有的可能处理的线程都正在使用时,在队列中排队请求的最大数目。当队列已满,任何接收到的请求都会被拒绝,默认值为10 
    -------- bufferSize:设由连接器创建输入流缓冲区的大小,以字节为单位。默认情况下,缓存区大的大小为2048字节 
    -------- compressableMimeType:MIME的列表,默认以逗号分隔。默认值是text/html,text/xml,text/plain 
    -------- compression:指定是否对响应的数据进行压缩。off:表示禁止压缩、on:表示允许压缩(文本将被压缩)、
    -------- force:表示所有情况下都进行压缩,默认值为off connectionTimeout:设置连接的超时值,以毫秒为单位。默认值为60000=60秒 
    -------- disableUploadTimeOut:允许Servlet容器,正在执行使用一个较长的连接超时值,以使Servlet有较长的时间来完成它的执行,默认值为false 
    -------- maxHttpHeaderSize:HTTP请求和响应头的最大量,以字节为单位,默认值为4096字节 maxKeepAliveRequest:服务器关闭之前,客户端发送的流水线最大数目。默认值为100
    -------- maxSpareThreads:允许存在空闲线程的最大数目,默认值为50 minSpareThreads:设当连接器第一次启协创建线程的数目,确保至少有这么多的空闲线程可用。默认值为4 port:服务端套接字监听的TCP端口号,默认值为8080(必须) 
    -------- socketBuffer:设Socket输出缓冲区的大小(以字节为单位),-1表示禁止缓冲,默认值为9000字节 toNoDelay:为true时,可以提高性能。默认值为true 
    -------- threadPriority:设JVM中请求处理线程优先级。默认值为NORMAL-PRIORITY -->  
    <Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />  
    <!-- 负责和其他HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时就需要用到这个连接器。 -->  
    <Engine name="Catalina" defaultHost="localhost">  
    <!-- 属性说明 name:对应$CATALINA_HOME/config/Catalina中的Catalina 
    defaultHost:对应Host元素中的name属性,也就是和$CATALINA_HOME/config/Catalina/localhost中的localhost 缺省的处理请求的虚拟主机名,它至少与其中的一个Host元素的name属性值是一样的 
    debug:日志等级 -->  
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>  
    <!--  
    由Host接口定义.一个Engine元素可以包含多个<Host>元素.  
    每个<Host>的元素定义了一个虚拟主机.它包含了一个或多个Web应用.  
    -->  
    <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">  
    <!-- 属性说明 
    -------- name:在此例中一直被强调为$CATALINA_HOME/config/Catalina/localhost中的localhost虚拟主机名 
    -------- debug:是日志的调试等级 
    -------- appBase:默认的应用路径,也就是把应用放在一个目录下,并在autoDeploy为true的情况下,可自动部署应用此路径相对于$CATALINA_HOME/ (web applications的基本目录) 
    -------- unpackWARs:设置为true,在Web应用为*.war是,解压此WAR文件. 如果为true,则tomcat会自动将WAR文件解压;否则不解压,直接从WAR文件中运行应用程序. 
    -------- autoDeploy:默认为true,表示如果有新的WEB应用放入appBase 并且Tomcat在运行的情况下,自动载入应用 -->  
    <Context path="/demm" docBase="E:\\projects\\demm\\WebRoot" debug="0" reloadable="true" >   
    </Context>  
    <!-- 属性说明 
    -------- path:访问的URI,如:http://localhost/是我的应用的根目录,访问此应用将用:http://localhost/demm进行操作,此元素必须, 表示此web application的URL的前缀,用来匹配一个Context。请求的URL形式为http://localhost:8080/path/* 
    -------- docBase:WEB应用的目录,此目录必须符合Java WEB应用的规范, web application的文件存放路径或者是WAR文件存放路径。 debug:日志等级 reloadable:是否在程序有改动时重新载入,设置成true会影响性能,但可自动载入修改后的文件, 如果为true,则Tomcat将支持热部署,会自动检测web application的/WEB-INF/lib和/WEB-INF/classes目录的变化, 自动装载新的JSP和Servlet,我们可以在不重起Tomcat的情况下改变web application -->  
    </Host>  
    </Engine>  
    </Service>  
    </Server>  
    

    Tomcat下server.xml选项对应表

    元素名

     

    属性

     

    解释

     

    server port 指定一个端口,这个端口负责监听关闭tomcat的请求
    shutdown 指定向端口发送的命令字符串
    service name 指定service的名字
    Connector(表示客户端和service之间的连接) port 指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求
    minProcessors 服务器启动时创建的处理请求的线程数
    maxProcessors 最大可以创建的处理请求的线程数
    enableLookups 如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
    redirectPort 指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
    acceptCount 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
    connectionTimeout 指定超时的时间数(以毫秒为单位)
    Engine(表示指定service中的请求处理机,接收和处理来自Connector的请求) defaultHost 指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的
    Context(表示一个web应用程序,通常为WAR文件,关于WAR的具体信息见servlet规范) docBase 应用程序的路径或者是WAR文件存放的路径
    path 表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/****
    reloadable 这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序
    host(表示一个虚拟主机) name 指定主机名
    appBase 应用程序基本目录,即存放应用程序的目录
    unpackWARs 如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序
    Logger(表示日志,调试和错误信息) className 指定logger使用的类名,此类必须实现org.apache.catalina.Logger 接口
    prefix 指定log文件的前缀
    suffix 指定log文件的后缀
    timestamp 如果为true,则log文件名中要加入时间,如下例:localhost_log.001-10-04.txt
    Realm(表示存放用户名,密码及role的数据库) className 指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口
    Valve(功能与Logger差不多,其prefix和suffix属性解释和Logger 中的一样) className 指定Valve使用的类名,如用org.apache.catalina.valves.AccessLogValve类可以记录应用程序的访问信息
    directory 指定log文件存放的位置
    pattern 有两个值,common方式记录远程主机名或ip地址,用户名,日期,第一行请求的字符串,HTTP响应代码,发送的字节数。combined方式比common方式记录的值更多

     

     
    转载请保留页面地址:https://www.breakyizhan.com/java/5030.html