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

tomcat服务器 专栏收录该内容
2 篇文章 0 订阅
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其他非核心元素的配置》


  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值