1. 程式人生 > >IntelliJ IDEA通過Tomcat啟動專案過程分析

IntelliJ IDEA通過Tomcat啟動專案過程分析

Tomcat部署專案的多種方式

Tomcat安裝目錄${TOMCAT_HOME}

  1. 常規的webapps下

    直接部署到${TOMCAT_HOME}/webapps下

  2. 外部部署

    修改${TOMCAT_HOME}/conf/server.xml 在<Host>標籤下新增web所在的目錄指定path,如:
    <Context path="/xx" docBase="D:\\workspace\\xx\\target\\xx" reloadable="true" sessionCookiePath="/xx"sessionCookieName="yoursessionname"> </Context>

  3. ${TOMCAT_HOME}/conf下建工程目錄映象

    在conf目錄中,新建 Catalina\localhost目錄,在該目錄中新建一個xml檔案,名字可以隨意取,只要和當前檔案中的檔名不重複就行了,該xml檔案的內容為:
    <Context path="/xx" docBase="D:\\workspace\\xx\\target\\xx" debug="0" privileged="true"> </Context>

IntelliJ IDEA 啟動專案分析

IntelliJ IDEA 就是使用第三種部署方式,不夠還是有些區別
這裡寫程式碼片

IDEA 啟動/停止 Tomcat 通過catalina.bat run/stop

但是在${TOMCAT_HOME}/conf下,沒有Catalina\localhost\xxxx.xml檔案
在.IntelliJIdea2017.1目錄下發現有相關的配置檔案
這裡寫圖片描述
檔案的修改時間與內容和啟動專案的資訊吻合

這裡寫圖片描述

說明 IDEA 啟動E盤下Tomcat的時候,載入了C盤下的專案部署配置檔案

下面看看catalina.bat的內容
這裡寫圖片描述

判斷CATALINA_HOME是否為空,如果為空就把當前位置設定為CATALINA_HOME,還有CATALINA_BASE
這裡寫圖片描述

E:\Work\TomcatIDEA\apache-tomcat-7.0.54
這裡寫圖片描述


既然確定IDEA是通過E:\Work\TomcatIDEA\apache-tomcat-7.0.54\bin\catalina.bat啟動的,但是此Tomcat目錄下的檔案修改時間都不是IDEA 啟動的時間,說明IDEA 沒有修改Tomcat目錄

這裡寫圖片描述
在檢視控制檯資訊時發現

Using CATALINA_BASE:   "C:\Users\xxxxx\.IntelliJIdea2017.1\system\tomcat\Unnamed_jeesite"
Using CATALINA_HOME:   "E:\Work\TomcatIDEA\apache-tomcat-7.0.54"

CATALINA_BASE和CATALINA_HOME區別

之前沒有仔細瞭解CATALINA_BASE和CATALINA_HOME區別
網上資料:

CATALINA_HOME是Tomcat的安裝目錄,CATALINA_BASE是Tomcat的工作目錄。如果我們想要執行Tomcat的 多個例項,但是不想安裝多個Tomcat軟體副本。那麼我們可以配置多個工作目錄,每個執行例項獨佔一個工作目錄,但是共享同一個安裝目錄
Tomcat每個執行例項需要使用自己的conf、logs、temp、webapps、work和shared目錄,因此CATALINA_BASE就 指向這些目錄。 而其他目錄主要包括了Tomcat的二進位制檔案和指令碼,CATALINA_HOME就指向這些目錄。

IntelliJ IDEA就是利用CATALINA_BASE執行多個例項,如圖
這裡寫圖片描述
這裡寫圖片描述

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述