詳細解說Tomcat 設置虛擬路徑的幾種方法及爲什麼設置虛擬路徑


說明:此次使用的是Tomcat 7.0


  很多朋友都會很疑惑,既然我們都知道在Tomcat服務器上部署項目只要將項目打包,然後放到webapps目錄下就可以了,爲什麼還需要配置虛擬路徑?的確,把項目放到webapps目錄下非常方便,至少在部署一個項目時,直接把項目扔到webapps目錄下所進行的操作會比設置虛擬路徑容易的多。但是如果考慮到長久性的操作以及多個項目呢?

 設置虛擬路徑的優勢我總結有兩點,當然這只是很普通、很常見的兩點優勢:第一、我們開發一個項目,在未定版之前需要進行無數次的修改,如果部署測試項目的時候直接將項目打成war包放到webapps目錄下,那麼每一次版本變更都需要將新的版本放到webapps目錄下覆蓋原先的版本,這樣對於我們測試項目來說是不是非常麻煩呢?如果建立一個虛擬路徑,直接映射到項目原件,這樣一來在測試階段是不是非常的方便?(當然這點對於使用集成開發環境工具的開發者來說可以忽略大笑);第二、Tomcat是一個服務器,既然是一個服務器是不是就有容量這麼一說呢?雖然這個容量是你說了算,但是再怎麼大是不是也有盤符容量限制?如果將所有的項目都部署到webapps目錄下,當項目比較大而且項目較多的時候是不是需要考慮一下盤符的感受呢?所以使用虛擬路徑也可以爲搭載Tomcat服務器的盤符分壓!


==============這真的只是一條分割線 ==============

好了,廢話就不多說了,直接切入正題!

如何設置虛擬路徑呢?網上有很多的帖子,但是很多都只提到2-3中方法,其實在Tomcat7的官方文檔中給出了5種設置的方法,下面我們就來看一下其中的4中,因爲有一種實在是不常用:


方法1(修改配置文件):這是最最最常見的一種方法

在Tomcat7的安裝目錄下找到conf目錄,在該目錄下有一個server.xml文件,這個文件的任務是配置整個服務器信息。例如修改端口號,添加虛擬主機…… 打開這個文件,找到HOST標籤,


在這個標籤中處插入以下代碼:

<Context path="/yang" docBase="f:\mysite1\xxx.war" debug="0" reloadable="true" crossContext="true" />

說明:

  • path:指定訪問該 Web 應用的 URL 入口。
  • docBase:指定 Web 應用的文件路徑,可以給定絕對路徑,也可以給定相對於<Host>的appBase 屬性的相對路徑,如果 Web 應用採用開放目錄結構,則指定 Web 應用的根目錄,如果 Web 應用是個 war 文件,則指定 war 文件的路徑。(指定項目所在地址)
  • reloadable:如果這個屬性設爲 true,tomcat 服務器在運行狀態下會監視在WEB-INF/classes 和 WEB-INF/lib 目錄下 class 文件的改動,如果監測到有 class 文件被更新的,服務器會自動重新加載 Web 應用。
  • crossContext:如果想在應用內調用 ServletContext.getContext()來返回在該虛擬主機上運行的其他 web application 的 request dispatcher,設爲 true。在安全性很重要的環境中設爲 false,使得 getContext()總是返回 null。缺省值爲 false。
  • Debug:與這個 Engine 關聯的 Logger 記錄的調試信息的詳細程度。數字越大,輸出越詳細。如果沒有指定,缺省爲 0。

這個方法一般在設置後都需要重啓服務器纔有效(有時候即使設置了reloadable=“true” 也需要重新啓動)


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


方法2(添加配置文件):推薦使用,不需要重啓服務器

在Tomcat根目錄下的/conf/Catalina/localhost/ 路徑下新建一個filename.xml,並在該xml中編寫語句

<Context docBase="F:\Java\JavaWebWorkspace\news"/>

即可創建虛擬站點,虛擬站點名爲filename。注意docbase指向你自己的應用程序目錄,各參數參見方法1中的<Context>標籤的參數(注意此文件名將作爲Context中的path屬性值,不管文件裏的path屬性值如何設置也是無效的 )。

如果需要分層虛擬站點,可以將文件名改成a#b#c,訪問分層虛擬站點時用localhost:8080/a/b/c

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

方法3:

在Tomcat根目錄下的conf目錄context.xml文件中插入

<Context path="/zhang" docBase="f:\mysite1" debug="0" reloadable="true" crossContext="true" />

注意,這個虛擬路徑修改方法會讓所有的站點都能加載,https://localhost:8080/zhang

使用這個之前最好將service.xml中的列表設置打開。

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

方法4:

在Tomcat根目錄下的路徑/conf/Catalina/localhost/context.xml.default ,在這裏進行配置,這個虛擬路徑修改方法會讓該主機下的所有的站點都能加載,同上。






發佈了27 篇原創文章 · 獲贊 248 · 訪問量 77萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章