程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> tomcat中有關配置文件的說明,tomcat有關配置文件

tomcat中有關配置文件的說明,tomcat有關配置文件

編輯:JAVA綜合教程

tomcat中有關配置文件的說明,tomcat有關配置文件


在以往的tomcat使用中本人一直都沒有注意到tomcat的conf目錄下配置文件的作用,都是“拿來主義”的思想,從未深究。但是最近遇到很多有關tomcat配置的問題,很是頭大,所以才稍作整理。

我們可以發現該目錄下有web.xml、tomcat-users.xml、server.xml以及context.xml這四個配置文件。首先我們分別來看看這幾個配置文件分別有哪些作用。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

web.xml的作用:

    web.xml的文件格式定義在Servlet規范中,因此所有符合Servlet規范的Java Servlet Container都會用到它。當tomcat部署應用程序時(在激活過程中,或加載應用程序後),它都會讀取通用的conf/web.xml,然後再讀取web應用程序中的WEB-INF/web.xml。(此文件一般不會涉及修改,可以不用過多了解,實話是筆者也不太了解。)

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

tomcat-users.xml的作用:

    顧名思義,"uesrs"那肯定是與用戶相關的啦。打開之後,我們可以在文件最下面看到一段被注釋的代碼:

1 <!--
2   <role rolename="tomcat"/>
3   <role rolename="role1"/>
4   <user username="tomcat" password="tomcat" roles="tomcat"/>
5   <user username="both" password="tomcat" roles="tomcat,role1"/>
6   <user username="role1" password="tomcat" roles="role1"/>
7 -->

很明顯這是配置用戶名、密碼以及用戶的權限的。只要在這段注釋的代碼後加入一行,就可以實現用戶的配置:

1 <user username="admin" password="1234" roles="manager-gui"/>

這樣我們就成功地添加了用戶名為:admin,密碼為:1234的管理員用戶(manager-gui為管理員角色)

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

server.xml的作用:

    在筆者看來server.xml在如今的tomcat版本中主要作用還是處理來自客戶端的訪問請求的,想要知道server.xml的作用,還是得了解其中各個標簽的含義。

     至於各個標簽的詳細含義,本文就不再指出,有意者請查看筆者專門總結的server.xml作用的文章,就指出server處理一個訪問請求的大體流程。

        

Tomcat Server處理一個http請求的過程

假設來自客戶的請求為:http://localhost:8080/macy/index.jsp

1) 請求發送到本機端口8080,被在那裡偵聽的Coyote HTTP/1.1 Connector獲得。

2) Connector把該請求交給它所在Service的Engine來處理,並等待來自Engine的響應。

3) Engine獲得請求localhost/macy/index.jsp,匹配它所擁的所虛擬主機Host。

4) Engine匹配到名為localhost的Host(即使匹配不到也把請求交給該Host處理,因為該Host被定義為該Engine的默認虛擬主機)。

5) localhost Host獲得請求/macy/index.jsp,匹配它所擁的所Context。

6) Host匹配到路徑為/macy的Context(如果匹配不到就把該請求交給路徑名為""的Context去處理)。

7) path="/macy"的Context獲得請求/index.jsp,在它的映射表中尋找對應的servlet。

8) Context匹配到URL PATTERN為*.jsp的servlet,對應於JspServlet類。

9) 構造HttpServletRequest對象和HttpServletResponse對象,作為參數調用JspServlet的doGet或doPost方法。

10)Context把執行完了之後的HttpServletResponse對象返回給Host。

11)Host把HttpServletResponse對象返回給Engine。

12)Engine把HttpServletResponse對象返回給Connector。

13)Connector把HttpServletResponse對象返回給客戶端浏覽器。

        需要指出的是,在tomcat 5.5 之後的版本有關context的配置已經可以不在server.xml中配置,而是在/conf/context.xml中進行獨立的配置。

原因:因為 server.xml 是不可動態重加載的資源,服務器一旦啟動了以後,要修改這個文件,就得重啟服務器才能重新加載。而 context.xml

      文件則不然, tomcat 服務器會定時去掃描這個文件。一旦發現文件被修改(時間戳改變了),就會自動重新加載這個文件,而不需要重啟服務器 。

        然而,官方貌似還是保留了server.xml中配置context的寫法,我想這樣做的主要原因是相對舊版本的兼容吧。(不推薦在server.xml中配置context)

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

context.xml的作用:

    從上文可知,每個<Context元素代表了運行在虛擬主機上的單個Web應用。

1 <Context 
2 path="/SmartStore" 
3 reloadable="false" 
4 docBase="D:\SmartStore\workspaceSmartStore\SmartStore\src\main\webapp" 
5 workDir="D:\SmartStore\workspaceSmartStore\SmartStore\work" >
6     <Logger className="org.apache.catalina.logger.SystemOutLogger" verbosity="4" timestamp="true"/>
7 </Context>

1、path:即要建立的虛擬目錄,,注意是/kaka,它指定訪問Web應用的 上下文根,如http://localhost:8080/SmartStore/****
2、docBase:為應用程序的路徑或WAR文件存放的路徑 ,可以是絕對路徑 ,也可是相對路徑,相對路徑是相對於<Host >(此處的host對應server.xml中的host元素)
3、reloadable:如果這個屬性設為true,Tomcat服務器在運行狀態下會監視在WEB-INF/classes和Web-INF/lib目錄CLASS文件的改變,如果監視到有class文件被更新,服務器自動重新加載Web應用,這樣我們可以在不重起tomcat的情況下改變應用程序。

4、workDir:jsp運行時都要先轉換成servlet,使用tomcat時會在tomcat安裝目錄下的work生成一系列的文件夾和.java文件和.class文件。設置該屬性後可改變生成的java和class文件的存儲路徑。

Tips:一個Host元素中嵌套任意多的Context元素。每個Context的路徑必須是惟一的,由path屬性定義。另外,你必須定義一個path=“”的context,這個Context稱為該虛擬主機的缺省web應用,用來處理那些不能匹配任何Context的Context路徑的請求。

 

context.xml中其他標簽:

<Context path="/kaka" docBase="kaka" debug="0" reloadbale="true" privileged="true">  
<WatchedResource>WEB-INF/web.xml</WatchedResource>  
<WatchedResource>WEB-INF/kaka.xml</WatchedResource> 監控資源文件,如果web.xml || kaka.xml改變了,則自動重新加載改應用。  
<Resource name="jdbc/testSiteds" 表示指定的jndi名稱  
auth="Container" 表示認證方式,一般為Container  
type="javax.sql.DataSource"  
maxActive="100" 連接池支持的最大連接數  
maxIdle="30" 連接池中最多可空閒maxIdle個連接  
maxWait="10000" 連接池中連接用完時,新的請求等待時間,毫秒  
username="root" 表示數據庫用戶名  
password="root" 表示數據庫用戶的密碼  
driverClassName="com.mysql.jdbc.Driver" 表示JDBC DRIVER  
url="jdbc:mysql://localhost:3306/testSite" /> 表示數據庫URL地址  
</Context>  

 

The last:

  

context.xml的三個作用范圍

---------------------------------------------------------------

1. tomcat server級別:

在/conf/context.xml裡配置

2. Host級別:

在/conf/Catalina/${hostName}裡添加context.xml,繼而進行配置

3. web app 級別:

在/conf/Catalina/${hostName}裡添加${webAppName}.xml,繼而進行配置

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved