tomcat核心配置文件server.xml核心元素的配置

来源:互联网 发布:淘宝对话生成 编辑:程序博客网 时间:2024/05/12 18:46
tomcat核心配置文件server.xml核心元素的配置


    本篇文章,我们不打算对server.xml进行深入的讲解。因为就大多数实际开发者而言,对server.xml进行配置的操作少之又少。但是,作为
tomcat服务器的核心配置文件,server.xml中配置了一些我们开发中需要关注的关键的点。比如tomcat服务器的监听端口port="8080"。这篇文章的
目的就是从整体上介绍server.xml,对server.xml进行一个整体的认知。这样一来,“进”我们可以对server.xml进行配置,“退”我们可以说自己是
一名合格的程序猿。


    一个基本的server.xml通常包含以下元素:Server、Service、Engine、Connector、Host、Context。这6大元素,通常是一个server.xml对外提供
服务的最简单配置,当然,Context元素并非必须,有些应用并没有配置Context元素节点。这样一看,server.xml配置文件也挺简单的嘛。好了,我们
来看一下这6大元素的相互之间的关联和配置说明。


    只看理论,难免枯燥,先附上最近项目的一个demo的server.xml的部分配置代码:


<?xml version="1.0" encoding="UTF-8"?><Server port="8009" shutdown="SHUTDOWN">  <!-- Comment these entries out to disable JMX MBeans support used for the administration web application -->  <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"/>  <!-- Global JNDI resources -->  <GlobalNamingResources>    <!-- Test entry for demonstration purposes -->    <Environment name="simpleValue" type="java.lang.Integer" value="30"/>    <!-- Editable user database that can also be used by UserDatabaseRealm to authenticate users -->    <Resource       auth="Container"       description="User database that can be updated and saved"       factory="org.apache.catalina.users.MemoryUserDatabaseFactory"       name="UserDatabase"       pathname="conf/tomcat-users.xml"       type="org.apache.catalina.UserDatabase"/>  <Resource       driverClassName="com.ibm.db2.jcc.DB2Driver"       maxActive="4"       maxIdle="2"       maxWait="5000"       name="DefaultDataSource"       password="aaa111"       type="javax.sql.DataSource"       url="jdbc:db2://127.0.0.1:50000/"       username="test"/>  </GlobalNamingResources>  <!-- Define the Tomcat Stand-Alone Service -->  <Service name="Catalina">    <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->    <Connector       URIEncoding="UTF-8"       acceptCount="100"       connectionTimeout="20000"       disableUploadTimeout="true"       enableLookups="false"       maxHttpHeaderSize="8192"       maxSpareThreads="75"       maxThreads="150"       minSpareThreads="5"       port="8080"       redirectPort="8443"/>    <!-- Define an AJP 1.3 Connector on port 8009 -->    <Connector URIEncoding="UTF-8" enableLookups="false" port="8008" protocol="AJP/1.3" redirectPort="8443"/>    <Engine defaultHost="localhost" name="Catalina">      <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>      <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false"></Host>    </Engine>  </Service></Server>

一,6大元素的关联


    跟节点Server:一个server.xml有且仅有一个跟节点<Server></Server>
    Service:一个Server跟节点可以包含多个Service节点。Service节点是tomcat对外提供服务的基本单元。一个Service节点可以包含多个Connector
节点,但是只能包含一个Engine节点。
    Engine:处理接收的请求。
    Connector:从客户端接收请求。
    Host:Host是Engine的子容器。一个Engine可以包含一个或者多个Host节点。每个Host节点代表一个虚拟主机。Host虚拟主机的功能是运行web应用,
包括装载、启动、结束web应用。每一个Host虚拟主机对应一个网络域名实体。
    Context:Context节点代表指定虚拟主机上的一个web应用。Context是Host的子容器,一个Host节点可以包含一个或者多个Context节点。有些项目的
server.xml中没有配置Context节点,是因为Host节点配置了自动部署autoDeploy="true",关于这点,在下面还会提到。


二,6大元素的属性配置详解


    1,跟节点Server:最常见的属性就是port和shutdown了,shutdown属性表示关闭Server的指令,port属性表示Server接收shutdown指令的端口号。
    2,Service:最常见的属性就是name,通常的配置是name="Catalina"。
    3,Engine:最常见属性是name和defaultHost,name属性用于日志和错误信息,在整个Server中是全局唯一的,defaultHost属性指定了默认的host
名称,当发往本机的请求指定的host名称不存在时,一律使用defaultHost指定的host进行处理。因此defaultHost的值必须与Engine节点下的某一个
Host节点的name属性值相同。
    4,Connector:最常见属性有四个:port、protocol、connectionTimeout、redirectPort。port属性表示连接请求的端口号。protocol属性表示
连接请求的协议。connectionTimeout属性表示连接请求的超时时间。redirectPort属性表示当强制要求https而请求时http时,重定向至端口号为8443
的Connector。
    5,Host:最常见属性有四个:name、unpackWARs、appBase、autoDeploy。name属性表示虚拟主机的主机名,注意,其中一个Host节点的name值与
Engine节点的defaultHost值相同。unpackWARs属性表示是否将代表web应用的WAR文件解压。如果值为true,则通过解压后的文件结构运行该web应用。
如果值为false,则直接使用WAR文件运行web应用。appBase属性表示web应用所在的目录,默认值是webapps,这是一个相对路径,代表的是tomcat跟
目录下webapps文件夹。autoDeploy属性表示开启web应用的自动部署,如果值为true,则tomcat在运行期间,定时检查新的web应用和更新。
    6,Context:最常见的属性有三个:docBase、path、reloadable。docBase属性表示该web应用的WAR包所在路径或者说应用的目录,在自动部署场
景下,docBase不在appBase目录中,才需要指定,如果docBase指定的WAR包或应用目录就在appBase中,则不需要在指定docBase。因为tomcat会自动
扫描appBase中的WAR包和应用目录,指定了反而会造成问题。path属性表示访问该web应用的上下文路径,tomcat会根据web应用的path和URI来选择web
应用处理请求(例如/projectName/index.html)。reloadable属性表示tomcat是否在运行时监控/WEB-INF/classes和WEB-INF/lib目录下class文件的改
动,如果值为true,则当class文件改动时,tomcat会重新加载应用。在开发环境中reloadable设置为true便于调试,但是在生产环境中reloadable设置
为true则会影响服务器的性能,因此reloadable属性的默认值为false。


    本篇文章到此为止,接下来,有时间小编还会和大家分享一下server.xml中其他非核心元素的配置细节,详情请参考小编的后续博文
《tomcat核心配置文件server.xml其他非核心元素的配置》


原创粉丝点击