tomcat自定義項目訪問路徑,不使用項目名,而是使用根路徑的方法

1,tomcat應用部署時,可以通過在server.xml裏配置,也可以在$CATALINA_HOME\conf\Catalina\localhost中添加一個xml文件,用來自定義應用部署。

 

這種部署可以指定應用訪問路徑。

 

經過測試,發現有以下幾種情況

1,server.xml裏如下配置

<Context path="/abc" reloadable="false" docBase="/tomcat/apache-tomcat-8.0.50/webapps/ocdc.war" workDir="/tomcat/apps/work">

  </Context>

path表示訪問的url路徑,docBase指定war包的路徑。啓動後,發現path生效,http://127.0.0.1:8080/abc已經是程序頁面。

webapps下增加了一個ocdc目錄,一個abc目錄,這說明omdm.war部署了兩次。

 

2,server.xml裏如下配置

<Context path="" reloadable="false" docBase="/tomcat/apache-tomcat-8.0.50/webapps/ocdc.war" workDir="/tomcat/apps/work">

</Context>

path爲空,docBase指定war包的路徑。

啓動後,發現path沒有生效,訪問http://127.0.0.1:8080/顯示的是tomcat的歡迎頁面。

 

3,server.xml裏如下配置

<Context path="" reloadable="false" docBase="/tomcat/apache-tomcat-8.0.50/webapps/ocdc" workDir="/tomcat/apps/work">

</Context>

把webapps下的war包刪除,ocdc目錄保留,發現沒有war包,ocdc路徑也自動刪除了。

測試時發現Tomcat會定時掃描webapps目錄,如果沒有對應的war包就會刪除項目目錄。如果想要不把war包放到目錄下,則可以在tomcat停止時把ocdc.war包移出webapps目錄,這樣ocdc目錄不會被刪除。如果有war包,則會自動部署項目。

在webapps/ocdc目錄不存在的情況下,context配置了這個目錄,則tomcat都無法啓動,而不只是應用不能啓動。

 

4,server.xml裏如下配置

 

<Context path="" reloadable="false" docBase="/tomcat/apache-tomcat-8.0.50/webapps/ocdc" workDir="/tomcat/apps/work">

         </Context>

 

 webapps/ocdc目錄存在,啓動tomcat後,path生效,訪問http://127.0.0.1:8080/顯示的是應用頁面。

 

5,嘗試刪除ROOT和omdm目錄,

<Context path="" reloadable="false" docBase="/tomcat/apache-tomcat-8.0.50/webapps/ocdc.war" workDir="/tomcat/apps/work">

 

啓動tomcat後,

http://197.1.25.30:8080/訪問的是應用的頁面。

但是查看webapps目錄,發現ROOT文件夾和ocdc文件夾裏面的內容一樣

懷疑是刪除了ROOT,又把應用的上下文根設置爲/,這樣會造成應用在ROOT目錄下部署一遍。

 

結論:

應用部署,註冊上下文根優先級:

Server.xml設置了context,且項目已經解壓部署>ROOT應用>Server.xml設置了context,項目還是war包,還沒有部署

  如果想要讓應用搶到ROOT的上下文根,則需要在server.xml裏docBase指定的爲已經解壓的目錄,且設置path爲空。

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