编辑

编辑

我们希望按照以下方式配置 Tomcat(其中X-SL->代表指向路径的Y符号链接):XY

  • 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 将其 war 解压到某种本地工作文件夹中(根据对源代码的快速扫描,我认为没有),或者唯一的方法是首先阻止 Tomcat 爆炸 war 文件?

我们正在使用 Tomcat 6。

编辑

我们将针对同一配置运行多个 Tomcat 实例。因此,可能会有 10 个 Tomcat 针对 运行deploymentconfiguration_a,10 个针对 运行deploymentconfiguration_b,但每个 Tomcat 中的实际 WAR 文件之间可能存在一些共同点部署配置(即deploymentconfiguration_a可能有 WAR 1、2 和 5,同时deploymentconfiguration_b可能有 WAR 1、5 和 7)。

之所以采用 RO,是为了避免意外修改特定配置,也是为了避免一个 Tomcat 实例干扰另一个实例。

答案1

根据您提供的信息(感谢您与我反复讨论)。我认为您可以选择以下选项:

  1. 在 server.xml 文件中的 Host 指令中插入 unpackWars="false",然后直接从 war 文件运行应用程序。
  2. 手动将 nas 上的 war 扩展到正确的部署目录中。

我给出这些建议只是基于这样一个事实:这些部署所在的文件系统对于所涉及的 Tomcat 来说是只读的。

我个人会选择选项 1。除非您出于某种原因需要查看单个文件,否则没有必要在文件展开的情况下运行。(当然,除非您有一个需要引用 war 中的文件的糟糕应用程序……)

我可能还会将 autoDeploy 设置为“off”。除非您认为您会当场更改这些 Tomcat 组下的 war 文件?

相关内容