Tomcat 網路應用程式管理員操作指南
目錄
簡介
在許多生產環境中,能夠管理網路應用程式而無需關閉和重新啟動 Tomcat 是非常有用的。本文件適用於網路應用程式 管理員 的 HTML 網路介面。
介面分為六個區段
- 訊息 - 顯示成功和失敗訊息。
- 管理員 - 一般管理員操作,例如清單和說明。
- 應用程式 - 網路應用程式和指令清單。
- 部署 - 部署網路應用程式。
- 診斷 - 找出潛在問題。
- 伺服器資訊 - 有關 Tomcat 伺服器的資訊。
訊息
顯示您執行的最後一個網路應用程式管理員指令的成功或失敗資訊。如果成功,會顯示 確定,並可能接著顯示成功訊息。如果失敗,會顯示 失敗,接著顯示錯誤訊息。每個指令的常見失敗訊息都記載在下方。每個指令的完整失敗訊息清單可以在 管理員 網路應用程式文件找到。
管理員
管理員區段有三個連結
- 應用程式清單 - 重新顯示網路應用程式的清單。
- HTML 管理員說明 - 此文件的連結。
- 管理員說明 - 綜合管理員應用程式操作指南的連結。
應用程式
應用程式區段會列出所有已安裝網路應用程式的資訊,並提供管理這些應用程式的連結。對於每個網路應用程式,會顯示下列資訊
- 路徑 - 網路應用程式內容路徑。
- 顯示名稱 - 網路應用程式的顯示名稱,如果其「web.xml」檔案中有設定。
- 執行中 - 網路應用程式是否正在執行且可用 (true),或未執行且不可用 (false)。
- 工作階段 - 此網路應用程式的遠端使用者的活動工作階段數。工作階段數會顯示為連結,當提交時會在訊息方塊中顯示網路應用程式工作階段使用情況的詳細資料。
- 指令 - 列出所有可以在網路應用程式上執行的指令。只有可以執行的指令會顯示為可以提交的連結。管理員網路應用程式本身無法執行任何指令。可以執行下列指令
- 開始 - 開始已停止的網路應用程式。
- 停止 - 停止目前正在執行且不可用的網路應用程式。
- 重新載入 - 重新載入網路應用程式,以便可以使用
/WEB-INF/lib/
中新的「.jar」檔案或/WEB-INF/classes/
中的新類別。 - 取消部署 - 停止此網路應用程式,然後從伺服器中移除。
啟動
發出訊號給已停止的應用程式重新啟動,並使其再次可用。例如,如果應用程式需要的資料庫暫時無法使用,停止和啟動會很有用。通常最好停止依賴此資料庫的網路應用程式,而不是讓使用者持續遇到資料庫例外狀況。
如果此指令成功,您會看到類似這樣的訊息
OK - Started application at context path /examples
否則,訊息會以 失敗
開頭,並包含錯誤訊息。問題的可能原因包括
- 遇到例外狀況
嘗試啟動網路應用程式時遇到例外狀況。請查看 Tomcat 記錄以取得詳細資料。
- 指定的內容路徑無效
內容路徑必須以斜線字元開頭,除非您參照的是 ROOT 網路應用程式,這種情況下內容路徑必須是零長度字串。
- 路徑 /foo 沒有內容
您指定的內容路徑上沒有已部署的應用程式。
- 未指定內容路徑
需要
path
參數。
停止
發出訊號給現有應用程式,使其無法使用,但保持部署狀態。在應用程式停止時收到的任何要求都會顯示 HTTP 錯誤 404,而且此應用程式會在列出應用程式的指令中顯示為「已停止」。
如果此指令成功,您會看到類似這樣的訊息
OK - Stopped application at context path /examples
否則,訊息會以 失敗
開頭,並包含錯誤訊息。問題的可能原因包括
- 遇到例外狀況
嘗試停止 Web 應用程式時遇到例外狀況。請查看 Tomcat 日誌以取得詳細資料。
- 指定的內容路徑無效
內容路徑必須以斜線字元開頭,除非您參照的是 ROOT 網路應用程式,這種情況下內容路徑必須是零長度字串。
- 路徑 /foo 沒有內容
您指定的內容路徑上沒有已部署的應用程式。
- 未指定內容路徑
需要
path
參數。
重新載入
發出訊號給現有應用程式,使其自行關閉並重新載入。當 Web 應用程式內容無法重新載入,而且您已在 /WEB-INF/classes
目錄中更新類別或屬性檔案,或者在 /WEB-INF/lib
目錄中新增或更新 jar 檔案時,這項功能會很有用。
注意:重新載入時不會檢查 /WEB-INF/web.xml
Web 應用程式設定檔;會使用先前的 web.xml 設定。如果您已變更 web.xml 檔案,您必須先停止,然後再啟動 Web 應用程式。
如果此指令成功,您會看到類似這樣的訊息
OK - Reloaded application at context path /examples
否則,訊息會以 失敗
開頭,並包含錯誤訊息。問題的可能原因包括
- 遇到例外狀況
嘗試重新啟動 Web 應用程式時遇到例外狀況。請查看 Tomcat 日誌以取得詳細資料。
- 指定的內容路徑無效
內容路徑必須以斜線字元開頭,除非您參照的是 ROOT 網路應用程式,這種情況下內容路徑必須是零長度字串。
- 路徑 /foo 沒有內容
您指定的內容路徑上沒有已部署的應用程式。
- 未指定內容路徑
需要
path
參數。 - 路徑 /foo 上已部署的 WAR 不支援重新載入
目前,當 Web 應用程式直接從 WAR 檔案安裝時,不支援應用程式重新載入(以擷取類別或
web.xml
檔案的變更),這會發生在主機設定為不解壓縮 WAR 檔案時。由於這項功能僅在從解壓縮目錄安裝 Web 應用程式時才有效,因此如果您使用 WAR 檔案,您應該解除部署
,然後再部署
應用程式,以擷取變更。
取消部署
警告 - 此指令會刪除 Web 應用程式目錄和/或「.war」檔案的內容(如果它存在於此虛擬主機的 appBase
目錄(通常為「webapps」)中)。Web 應用程式暫時工作目錄也會被刪除。如果您只是想讓應用程式停止服務,您應該改用 /stop
指令。
發出訊號給現有應用程式,使其正常關閉,然後從 Tomcat 中移除(這也會讓此內容路徑可供日後重複使用)。此指令與 /deploy
Ant 指令相反,而且 HTML 管理員中也有相關的部署功能。
如果此指令成功,您會看到類似這樣的訊息
OK - Undeployed application at context path /examples
否則,訊息會以 失敗
開頭,並包含錯誤訊息。問題的可能原因包括
- 遇到例外狀況
嘗試解除部署 Web 應用程式時遇到例外狀況。請查看 Tomcat 日誌以取得詳細資料。
- 指定的內容路徑無效
內容路徑必須以斜線字元開頭,除非您參照的是 ROOT 網路應用程式,這種情況下內容路徑必須是零長度字串。
- 路徑 /foo 沒有內容
您指定的內容路徑上沒有已部署的應用程式。
- 未指定內容路徑需要
path
參數。
部署
可以使用位於 Tomcat 伺服器上的檔案或目錄來部署 Web 應用程式,或者您可以將 Web 應用程式封存檔 (WAR) 檔案上傳到伺服器。
若要安裝應用程式,請填寫您想執行的安裝類型之適當欄位,然後使用「安裝」按鈕提交。
部署位於伺服器上的目錄或 WAR 檔案
部署並啟動新的網頁應用程式,附加至指定的「內容路徑」(不得與任何其他網頁應用程式同時使用)。此指令與「解除部署」指令的邏輯相反。
部署指令有許多不同的使用方式。
透過 URL 部署目錄或 WAR
安裝位於 Tomcat 伺服器上的網頁應用程式目錄或「.war」檔案。如果未指定「內容路徑」,則目錄名稱或 war 檔名(不含「.war」副檔名)會用作路徑。「WAR 或目錄 URL」會指定目錄或網頁應用程式封存檔 (WAR) 檔案的 URL(包括 file:
架構)。用於參照 WAR 檔案的 URL 支援語法說明在 java.net.JarURLConnection
類別的 Javadocs 頁面上。請僅使用參照整個 WAR 檔案的 URL。
在此範例中,位於 Tomcat 伺服器上目錄 C:\path\to\foo
(在 Windows 上執行)的網頁應用程式會部署為名為 /footoo
的網頁應用程式內容。
Context Path: /footoo
WAR or Directory URL: file:C:/path/to/foo
在此範例中,Tomcat 伺服器上「.war」檔案 /path/to/bar.war
(在 Unix 上執行)會部署為名為 /bar
的網頁應用程式內容。請注意,沒有 path
參數,因此內容路徑預設為網頁應用程式封存檔檔名(不含「.war」副檔名)。
WAR or Directory URL: jar:file:/path/to/bar.war!/
從主機 appBase 部署目錄或 War
安裝位於您的主機 appBase 目錄中的網頁應用程式目錄或「.war」檔案。如果未指定「內容路徑」,則目錄名稱或 war 檔名(不含「.war」副檔名)會用作路徑。
在此範例中,位於 Tomcat 伺服器主機 appBase 目錄中名為 foo
的子目錄中的網頁應用程式會部署為名為 /foo
的網頁應用程式內容。請注意,沒有 path
參數,因此內容路徑預設為網頁應用程式目錄名稱。
WAR or Directory URL: foo
在此範例中,位於 Tomcat 伺服器主機 appBase 目錄中的「.war」檔案 bar.war
會部署為名為 /bartoo
的網頁應用程式內容。
Context Path: /bartoo
WAR or Directory URL: bar.war
使用內容組態「.xml」檔案部署
如果主機 deployXML 旗標設為 true,您可以使用內容設定「.xml」檔案和選用的「.war」檔案或網頁應用程式目錄安裝網頁應用程式。使用內容「.xml」設定檔安裝網頁應用程式時,不會使用「內容路徑」。
內容設定「.xml」檔案可以包含網頁應用程式內容的有效 XML,就像在 Tomcat server.xml
設定檔中設定的一樣。以下是 Tomcat 在 Windows 上執行的範例
<Context path="/foobar" docBase="C:\path\to\application\foobar">
</Context>
使用「WAR 或目錄 URL」是選用的。當用於選取網頁應用程式「.war」檔案或目錄時,會覆寫在內容設定「.xml」檔案中設定的任何 docBase。
以下是使用內容設定「.xml」檔案在 Windows 上執行 Tomcat 安裝應用程式的範例。
XML Configuration file URL: file:C:/path/to/context.xml
以下是使用內容設定「.xml」檔案和位於伺服器上的網頁應用程式「.war」檔案(在 Unix 上執行 Tomcat)安裝應用程式的範例。
XML Configuration file URL: file:/path/to/context.xml
WAR or Directory URL: jar:file:/path/to/bar.war!/
上傳 WAR 檔案進行安裝
從您的本機系統上傳 WAR 檔案,並將其安裝到您主機的 appBase 中。WAR 檔案名稱(不含「.war」副檔名)會用作內容路徑名稱。
使用「瀏覽」按鈕,從您的本機桌面系統選擇要上傳到伺服器的 WAR 檔案。
.WAR 檔案可能包含 Tomcat 特定的部署設定,方法是在 /META-INF/context.xml
中包含 Context 設定 XML 檔案。
上傳 WAR 檔案可能會因下列原因而失敗
- 上傳的檔案必須是 .war
上傳安裝只會接受副檔名為「.war」的檔案。
- War 檔案已存在於伺服器上
如果同名的 war 檔案已存在於您的主機 appBase 中,上傳將會失敗。請從您的主機 appBase 中取消部署現有的 war 檔案,或使用不同的名稱上傳新的 war 檔案。
- 檔案上傳失敗,沒有檔案
檔案上傳失敗,伺服器沒有收到檔案。
- 安裝上傳失敗,例外
war 檔案上傳或安裝因 Java 例外而失敗。例外訊息將會列出。
部署備註
如果主機設定為 unpackWARs=true,而且您安裝了 war 檔案,war 將會解壓縮到您主機 appBase 目錄中的目錄中。
如果應用程式 war 或目錄部署在您的主機 appBase 目錄中,而且主機設定為 autoDeploy=true,內容路徑必須與目錄名稱或 war 檔案名稱(不含「.war」副檔名)相符。
為了在不受信任的使用者可以管理網路應用程式的安全性,主機 deployXML 旗標可以設定為 false。這可以防止不受信任的使用者使用設定 XML 檔案安裝網路應用程式,也可以防止他們安裝位於其主機 appBase 之外的應用程式目錄或「.war」檔案。
部署訊息
如果部署和啟動成功,您將會收到類似這樣的訊息
OK - Deployed application at context path /foo
否則,訊息會以 失敗
開頭,並包含錯誤訊息。問題的可能原因包括
- 應用程式已存在於路徑 /foo
所有目前正在執行的網路應用程式的內容路徑必須是唯一的。因此,您必須取消部署使用此內容路徑的現有網路應用程式,或為新的網路應用程式選擇不同的內容路徑。
- 文件基礎不存在或不是可讀取的目錄
WAR 或目錄 URL:欄位指定的 URL 必須識別此伺服器上包含網路應用程式的「解壓縮」版本的目錄,或包含此應用程式的網路應用程式封存 (WAR) 檔案的絕對 URL。修正輸入 WAR 或目錄 URL:欄位的值。
- 遇到例外狀況
嘗試啟動新的 Web 應用程式時遇到例外狀況。請查看 Tomcat 日誌以取得詳細資料,但可能的解釋包括解析
/WEB-INF/web.xml
檔案時發生問題,或初始化應用程式事件監聽器和篩選器時遇到類別遺失。 - 指定無效的應用程式 URL
您指定的 WAR 或目錄 URL:欄位的 URL 無效。此類 URL 必須以
file:
開頭,而 WAR 檔案的 URL 必須以「.war」結尾。 - 指定的內容路徑無效
除非您參照 ROOT Web 應用程式(在此情況下,內容路徑必須為「/」字串),否則內容路徑必須以斜線字元開頭。
- 內容路徑必須與目錄或 WAR 檔案名稱相符
如果應用程式 war 或目錄部署在您的主機 appBase 目錄中,而且主機設定為 autoDeploy=true,內容路徑必須與目錄名稱或 war 檔案名稱(不含「.war」副檔名)相符。
- 只能部署主機 Web 應用程式目錄中的 Web 應用程式
如果主機 deployXML 旗標設為 false,則當嘗試在主機 appBase 目錄外安裝 Web 應用程式目錄或「.war」檔案時,將會發生此錯誤。
診斷
尋找記憶體外洩
尋找記憶體洩漏診斷會觸發完整的垃圾回收。在生產系統上使用時應極為謹慎。
尋找記憶體洩漏診斷會嘗試識別在停止、重新載入或解除部署時導致記憶體洩漏的 Web 應用程式。結果應始終使用剖析器確認。此診斷會使用 StandardHost 實作提供的額外功能。如果使用未延伸 StandardHost 的自訂主機,則此診斷將無法運作。
此診斷會列出已停止、重新載入或解除部署的 Web 應用程式的內容路徑,但前一次執行中的類別仍存在於記憶體中,因此會造成記憶體洩漏。如果應用程式已重新載入多次,則可能會列出多次。
已明確記錄從 Java 程式碼觸發完整的垃圾回收是不可靠的。此外,根據所使用的 JVM,有選項可以停用明確的 GC 觸發,例如 -XX:+DisableExplicitGC
。如果您要確保診斷已成功執行完整的 GC,則需要使用 GC 記錄、JConsole 或類似的工具進行檢查。
伺服器資訊
此區段顯示有關 Tomcat、Tomcat 所在伺服器的作業系統、Tomcat 所執行的 Java 虛擬機器、伺服器的主要主機名稱(可能不是用於存取 Tomcat 的主機名稱)以及伺服器的主要 IP 位址(可能不是用於存取 Tomcat 的 IP 位址)的資訊。