Tomcat 將戰爭解壓到 appBase 以外的目錄中
我們希望通過以下方式配置 Tomcat(其中
X
-SL->Y
表示一個名為X
指向路徑的符號連結Y
):
CATALINA_HOME/webapps
-SL->/var/data/nas/deploymentconfiguration_a
/var/data/nas/deploymentconfiguration_a/myapp.war
-SL->/var/data/nas/wars/app1.war
這個想法是能夠配置哪些應用程序部署在特定的 Tomcat 實例上,方法是在部署配置文件夾中擁有一系列指向 WAR 的符號連結,並在 CATALINA_HOME 中使用另一個名為 webapps 的符號連結到特定的部署配置文件夾。
許多 Tomcat 實例將指向同一個部署配置文件夾。
我希望這很清楚:S
整個
/var/data/nas
樹將是只讀的。在試驗中,我們遇到的主要問題是 Tomcat 顯然試圖將戰爭爆發到只讀的部署配置文件夾(它認為是)中。
appBase
有沒有辦法讓 Tomcat 將它的戰爭解壓到某種本地工作文件夾中(我認為沒有,基於對原始碼的快速掃描),或者是繼續阻止 Tomcat 爆炸的唯一方法首先是戰爭文件?
我們正在使用 Tomcat 6。
編輯
我們將針對相同的配置執行多個 Tomcat 實例。所以可能有 10 個 Tomcat
deploymentconfiguration_a
和 10個 Tomcat 執行,但每個部署配置deploymentconfiguration_b
中的實際 WAR 文件之間可能存在一些共性(即可能有 WAR 1、2 和 5,而可能有 WAR 1、5 和 7)。deploymentconfiguration_a``deploymentconfiguration_b
它是 RO 的原因是為了避免對特定配置的意外修改,以及避免一個 Tomcat 實例踩到另一個實例的腳趾。
基於你給我的(感謝你和我來回擊球)。我認為這些是您的選擇:
- 在 server.xml 文件中的 Host 指令中插入 unpackWars=“false” 並直接從 war 文件執行應用程序。
- 手動將您的 nas 上的戰爭擴展到正確的部署目錄。
我僅基於以下事實給出這些建議中的任何一個,即這些部署所在的文件系統對於所涉及的 Tomcat 來說是只讀的。
我個人會選擇選項#1。除非您出於某種原因需要查看單個文件,否則沒有充分的理由在擴展文件的情況下執行。(當然,除非你有一個糟糕的應用程序需要在戰爭中引用文件……)
我也可能會設置 autoDeploy=“off”。除非您認為您將在現場更改這些 Tomcat 組下的戰爭文件?