Deployment

Tomcat 將戰爭解壓到 appBase 以外的目錄中

  • November 22, 2010

我們希望通過以下方式配置 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 個 Tomcatdeploymentconfiguration_a和 10個 Tomcat 執行,但每個部署配置deploymentconfiguration_b中的實際 WAR 文件之間可能存在一些共性(即可能有 WAR 1、2 和 5,而可能有 WAR 1、5 和 7)。deploymentconfiguration_a``deploymentconfiguration_b

它是 RO 的原因是為了避免對特定配置的意外修改,以及避免一個 Tomcat 實例踩到另一個實例的腳趾。

基於你給我的(感謝你和我來回擊球)。我認為這些是您的選擇:

  1. 在 server.xml 文件中的 Host 指令中插入 unpackWars=“false” 並直接從 war 文件執行應用程序。
  2. 手動將您的 nas 上的戰爭擴展到正確的部署目錄。

我僅基於以下事實給出這些建議中的任何一個,即這些部署所在的文件系統對於所涉及的 Tomcat 來說是只讀的。

我個人會選擇選項#1。除非您出於某種原因需要查看單個文件,否則沒有充分的理由在擴展文件的情況下執行。(當然,除非你有一個糟糕的應用程序需要在戰爭中引用文件……)

我也可能會設置 autoDeploy=“off”。除非您認為您將在現場更改這些 Tomcat 組下的戰爭文件?

引用自:https://serverfault.com/questions/204763