自動部署 - 使用案例

目錄

簡介

此頁面定義在許多典型使用案例中自動部署器的預期行為。這是 Tomcat 功能中一個複雜的領域。雖然此文件與 Tomcat 行為之間的任何差異都是錯誤,但修正方法可能是變更此文件、Tomcat 行為或兩者。

金鑰

術語說明
XML 位於主機的 configBase 中的 XML 組態檔。它必須包含單一的 <Context> 元素,且可能包含選用的巢狀元素。它未定義明確的 docBase 屬性。它代表單一網路應用程式。它通常稱為 context.xml 檔。
XML+EW 位於主機的 configBase 中的 XML 組態檔。它必須包含單一的 <Context> 元素,且可能包含選用的巢狀元素。它包含明確的 docBase 屬性,指向外部 WAR。它代表單一網路應用程式。它通常稱為 context.xml 檔。
XML+ED 位於主機的 configBase 中的 XML 組態檔。它必須包含單一的 <Context> 元素,且可能包含選用的巢狀元素。它包含明確的 docBase 屬性,指向外部目錄。它代表單一網路應用程式。它通常稱為 context.xml 檔。
WAR 位於主機的 appBase 中的 WAR 檔案。WAR 不包含嵌入式 context.xml 檔案。
WAR+XML 位於主機的 appBase 中的 WAR 檔案。WAR 包含嵌入式 context.xml 檔案。
DIR 位於主機的 appBase 中的目錄。目錄不包含嵌入式 context.xml 檔案。
DIR+XML 位於主機的 appBase 中的目錄。目錄包含嵌入式 context.xml 檔案。
redeploy 表示 Web 應用程式的 Context 物件會被銷毀,並建立新的 Context 物件。如果存在且組態允許,會透過剖析 context.xml 檔案來建立這個新的 Context 物件。web.xml 檔案會在應用程式啟動程序期間剖析。預設組態中儲存在標準 Manager 中的任何工作階段都不會持續存在。在重新部署期間,對 Web 應用程式的任何要求都會被處理,就像 Web 應用程式未部署一樣。
reload 表示 Web 應用程式的 Context 物件會停止,然後再啟動。web.xml 檔案會在應用程式啟動程序期間剖析。預設組態中儲存在標準 Manager 中的任何工作階段都不會持續存在。在重新載入期間,對 Web 應用程式的任何要求都會暫停,直到重新載入完成,屆時它們將繼續使用重新載入的 Web 應用程式。

新增檔案

此區段說明當自動部署程序發現新的 Web 應用程式時,Tomcat 的行為。

啟動人工製品 組態設定 結果
deployXMLcopyXMLunpackWARs XMLWARDIR備註
XML 任一任一任一 YNN1, 2, 3
XML+EW 任一任一false YNN1
XML+EW 任一任一true YNY1
XML+ED 任一任一任一 YNN1, 2
WAR+XML false任一false NYN4
WAR+XML false任一true NYY4
WAR+XML truefalsefalse NYN
WAR+XML truefalsetrue NYY
WAR+XML truetruefalse YYN
WAR+XML truetruetrue YYY
WAR 任一任一false NYN
WAR 任一任一true NYY
DIR+XML false任一任一 NNY4
DIR+XML truefalse任一 NNY
DIR+XML truetrue任一 YNY
DIR false任一任一 NNY

已刪除檔案

此區段說明當自動部署程序偵測到 Web 應用程式檔案已刪除時,Tomcat 的行為。

當檔案被刪除或修改時,在修改/刪除的資源之後所列出的任何重新部署資源都會被刪除(且可能重新建立)。重新部署資源的順序為

  1. WAR
  2. DIR
  3. XML
  4. 全域資源

上述刪除規則有一些例外

  • 全域資源絕不會被刪除
  • 外部資源絕不會被刪除
  • 如果 WAR 或 DIR 已修改,則只有在 copyXMLtruedeployXMLtrue 的情況下,才會刪除 XML 檔案

在下列表格中

  • '-' 表示「與不存在時相同」。亦即,人工製品在變更前不存在,在變更後也不存在。使用 '-' 而不是 'N' 是為了將注意力集中在變更的部分。
  • 'R' 表示目錄會透過展開 WAR 檔案來重新建立。這只會在 unpackWARstrue 的情況下發生。
  • 「XW」表示如果 WAR 檔包含 META-INF/context.xml 檔案,它將會被提取並放置在主機的 configBase 中。這僅在 copyXMLtruedeployXMLtrue 時才會發生。
  • 「XD」表示如果目錄包含 META-INF/context.xml 檔案,它將會被複製到主機的 configBase 中。這僅在 copyXMLtruedeployXMLtrue 時才會發生。
現有成品 成品已移除 剩餘成品
XMLWARDIR XMLWARDIR備註
NNY DIR --N
NYN WAR -N-
NYY DIR -YR
NYY WAR -NN
YNN XML N--
YNY DIR N-N5
YNY XML XD-Y
YYN WAR NN-5
YYN XML XWY-
YYY DIR XWYR
YYY WAR NNN
YYY XML XWYY
YY (外部)N WAR YN-3
YY (外部)N XML NY (外部)-6
YNY (外部) DIR Y-N3
YNY (外部) XML N-Y (外部)6
YY (外部)Y DIR YY (外部)R
YY (外部)Y WAR YNN3
YY (外部)Y XML NY (外部)N6

已修改檔案

此區段說明當自動部署程序偵測到 Web 應用程式檔案已修改時,Tomcat 的行為。

在下列表格中

  • '-' 表示「與不存在時相同」。亦即,人工製品在變更前不存在,在變更後也不存在。使用 '-' 而不是 'N' 是為了將注意力集中在變更的部分。
  • 「M」表示成品已修改。
  • 「R」表示目錄已刪除並透過展開 WAR 檔重新建立。這僅在 unpackWARstrue 時才會發生。
現有成品 成品已修改 剩餘成品
XMLWARDIR XMLWARDIR動作
NNY DIR --M
NYN WAR -M-重新部署
NYY DIR -YM
NYY WAR -MR重新部署
YNN XML M--重新部署
YNY DIR Y-M
YNY XML M-Y重新部署
YYN WAR YM-重新載入
YYN XML MY-重新部署
YYY DIR YYM
YYY WAR YMR重新載入
YYY XML MYY重新部署
YY(外部)N WAR YM(外部)-重新載入
YY(外部)N XML MY(外部)-重新部署
YNY(外部) DIR Y-M(外部)
YNY(外部) XML M-Y(外部)重新部署
YY(外部)Y DIR YY(外部)M
YY(外部)Y WAR YM(外部)R重新載入
YY(外部)Y XML MY(外部)Y重新部署

已新增檔案

這會視為已新增的檔案已修改,並執行下列額外動作

  • 如果新增 WAR,任何 DIR 都會被移除,並可能根據 unpackWARs 重新建立。
  • 如果新增 XML 檔案,該檔案會參考外部 docBase,appBase 中的任何 WAR 或 DIR 都會被移除。如果外部資源是 WAR 且 unpackWARs 為 true,則 DIR 可能會重新建立。
  • 如果在已存在的 WAR 中新增 DIR,且 unpackWARsfalse,則 DIR 會被忽略,但在首次偵測到 DIR 時會記錄警告。如果移除 WAR,則 DIR 會保留,並可能透過自動部署進行部署。
  • 如果在已存在的外部 WAR 中,將 WAR 新增到 appBase,則 appBase 中的 WAR 會被忽略,但在首次偵測到 appBase 中的 WAR 時會記錄警告。如果移除外部 WAR,則 appBase 中的 WAR 會保留,並可能透過自動部署進行部署。
  • 如果將 XML 檔案新增到從該 DIR 部署的應用程式的 META-INF 目錄中,則應用程式將永遠重新部署。結果會與新部署相同。

備註

  1. deployXMLcopyXML 會被忽略,因為在 configBase 中發現了 XML 檔案。
  2. unpackWARs 會被忽略,因為沒有 WAR 檔。
  3. 內容不會在預期的 docBase 中,因此內容將無法啟動。
  4. Web 應用程式無法部署,因為它包含嵌入式 META-INF/context.xml,deployXMLfalse,且在 configBase 中未提供 XML。
  5. 僅在 copyXMLtruedeployXMLtrue 時,XML 檔案才會被刪除。
  6. 儘管外部資源仍然存在,但 Web 應用程式已完全解除部署,因為 Tomcat 不知道外部資源。