tomcat配置文件context.xml和server.xml分析

在tomcat 5.5之前
       Context體現在/conf/server.xml中的Host裏的<Context>元素,它由Context接口定義。每個<Context元素代表了運行在虛擬主機上的單個Web應用
在tomcat 5.5之後
       不推薦在server.xml中進行配置,而是在/conf/context.xml中進行獨立的配置。因爲server.xml是不可動態重加載的資源,服務器一旦啓動了以後,要修改這個文件,就得重啓服務器才能重新加載。而context.xml文件則不然,tomcat服務器會定時去掃描這個文件。一旦發現文件被修改(時間戳改變了),就會自動重新加載這個文件,而不需要重啓服務器。

context.xml

<?xml version='1.0' encoding='utf-8'?>
<Context>
<!-- 監控資源文件,如果web.xml改變了,則自動重新加載應用 -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!--本地測試項目-->
<!-- name,指定JNDI名稱 -->
<!-- auth,表示認證方式,一般爲Container -->
<!-- maxActive,連接池支持的最大連接數 -->
<!-- maxIdle,連接池中最多可空閒連接數 -->
<!-- maxWait,連接池中連接用完時,新的請求等待時間,單位毫秒 -->
<!-- username,password,數據庫用戶名/密碼 -->
<!-- driverClassName,jdbc驅動 -->
<!-- url,數據庫url地址 -->
<Resource name="jdbc/opslocal" 
auth="Container" 
type="javax.sql.DataSource" 
username="scott" 
password="admin" 
driverClassName="oracle.jdbc.driver.OracleDriver" 
url="jdbc:oracle:thin:@localhost:1521:orcl" 
maxActive="100000" 
maxIdle="4"/>
<Resource name="jdbc/inslocal" 
auth="Container" 
type="javax.sql.DataSource" 
username="ins" 
password="ayw_ins1" 
driverClassName="oracle.jdbc.driver.OracleDriver" 
url="jdbc:oracle:thin:@132.228.213.137:1521:ossmob" 
maxActive="100000" 
maxIdle="4"/>
<!--生產項目-->
<Resource name="jdbc/cpflocal" 
auth="Container" 
type="javax.sql.DataSource" 
username="cpf_dispatch" 
password="cpf_dispatch" 
driverClassName="oracle.jdbc.driver.OracleDriver" 
url="jdbc:oracle:thin:@132.232.7.51:15211:orcl" 
maxActive="100000" 
maxIdle="4"/>
</Context>

 

server.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- port:指定一個端口,負責監聽關閉tomcat的請求,shutdown:指定向端口發送的命令字符串-->
<Server port="8005" shutdown="SHUTDOWN">

<!-- 監聽器:通常實現tomcat內部進行通信的,可在各組件之間完成通信-->
<Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>
<Listener className="org.apache.catalina.core.JasperListener"/>
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>

<!-- 全局命名資源:方便全局引用,所以爲其起完名稱後可以隨便調用的-->
<GlobalNamingResources>

<!-- pathname:即調用tomcat-user.xml配置文件進行用戶認證-->
<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"/>
</GlobalNamingResources>

<!-- 服務:一個服務組件通常包含一個引擎和此引擎相關聯的一個或多個鏈接服務器-->
<Service name="Catalina">
<!-- 連接服務器:表示客戶端和service之間的連接,一個引擎能配置多個連接器 但是每個連接器的端口不能衝突;負責接收客戶請求,以及向客戶返回響應結果-->
<!-- port:所在監聽端口,protocol:協議版本號,connectionTimeout:連接超時時間,單位毫秒-->
<!-- maxThreads設定在監聽端口的線程的最大數目,這個值也決定了服務器可以同時響應客戶請求的最大數目.默認值爲200 -->
<!-- connectionTimeout定義建立客戶連接超時的時間.如果爲-1,表示不限制建立客戶連接的時間 -->
<Connector port="8080" 
maxThreads="1500"
maxProcessors="450"
connectionTimeout="20000" 
protocol="HTTP/1.1" 
redirectPort="8443"/>

<!-- redirectPort指定轉發端口.如果當前端口只支持non-SSL請求,在需要安全通信的場命,將把客戶請求轉發至SSL的redirectPort端口-->
<!-- enableLookups如果設爲true,表示支持域名解析,可以把IP地址解析爲主機名.WEB應用中調用request.getRemoteHost方法返回客戶機主機名.默認值爲true -->
<Connector port="8009" enableLookups ="false" protocol="AJP/1.3" redirectPort="8443"/>
<!--maxThreads:最大線程,scheme:協議版本,secure:安全的-->
<!--clientAuth:不驗證客戶端,sslProtocol:協議用的是tls-->
<!--
<Connector port="8443"
protocol="HTTP/1.1"
SSLEnabled="true"
maxThreads="700"
scheme="https"
secure="true"
maxProcessors="300"
clientAuth="false"
sslProtocol="TLS" />
 -->
<!--引擎:表示指定service中的請求處理機,接收和處理來自Connector的請求.可以接收用戶的http請求,並構建響應報文,而且可以在內部處理java程序的整個套間-->
<!-- defaultHost 指定缺省的處理請求的主機名,它至少與其中的一個host元素的name屬性值是一樣的 -->
<Engine defaultHost="localhost" name="Catalina">

<!-- Realm 表示存放用戶名,密碼及role的數據庫 -->
<!-- className 指定Realm使用的類名,此類必須實現org.apache.catalina.Realm接口 -->
<Realm className="org.apache.catalina.realm.LockOutRealm">
         <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>

<!-- appBase 應用程序基本目錄,即存放應用程序的目錄-->
<!-- unpackWARs:如果此項設置爲true,表示把WEB應用的WAR文件先展開爲開放目錄結構後再運行.如果設爲false將直接運行爲WAR文件,-->
<!-- autoDeploy:如果此項設爲true,表示Tomcat服務處於運行狀態時,能夠監測appBase下的文件,如果有新有web應用加入進來,會自運發佈這個WEB應用-->
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">

<!-- ValveclassName:定義閥門,java中類的記錄方式,當前所處域名反過來寫的記錄方式-->
<!-- prefix,suffix:日誌的命名-->
<!-- pattern:訪問日誌的格式-->
<!-- directory 指定log文件存放的位置 -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log." suffix=".txt"/>

<!-- Context 表示運行在虛擬主機上的一個web應用程序,通常爲WAR文件 -->
<!-- 一個<Host>可以包含多個<Context>元素.每個web應用有唯一的一個相對應的Context代表web應用自身.servlet容器爲第一個web應用創建一個ServletContext對象. -->
<!-- docBase 應用程序的路徑或者是WAR文件存放的路徑 -->
<!-- path 表示此web應用程序的url的前綴,這樣請求的url爲http://localhost:8080/****  -->
<!-- reloadable 這個屬性非常重要,如果爲true,則tomcat會自動檢測應用程序的/WEB-INF/lib 和/WEB-INF/classes目錄的變化,自動裝載應用程序,我們可以在不重起tomcat的情況下改變應用程序 -->
<Context docBase="sample-demo" path="/sample-demo" reloadable="true" source="org.eclipse.jst.jee.server:sample-demo"/>
</Host>
</Engine>
</Service>
</Server>

 

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