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

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其他非核心元素的配置》


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章