你可以在 webapp 之外有 WEB-INF 吗?

Can you have WEB-INF outside the webapp?

外部提供的 war 文件在 WEB-INF 目录中包含其配置。我试图让 Tomcat 为 Web 应用程序提供备用 WEB-INF 目录,这样我就可以将配置置于版本控制之下,而不必修改 war 文件。 war 文件的新版本将定期提供。

所以,我想做的,就是把Tomcat之外的WEB-INF内容复制出来,放到版本控制下,然后告诉Tomcat(暂时是8,但是我们可以切换到 7) 以将该外部目录用作其 WEB-INF。这样,新部署将自动使用旧配置,并且对配置的更改不会丢失。

(我实际上计划将配置作为单独的可部署/"webapp" 并让 jenkins 处理它,因此没有人必须直接访问服务器用户空间。但这与问题无关,我思考)

我环顾四周,我最好的想法似乎集中在 Tomcat 提供的上下文和资源上,但我不确定这是否真的可行。

$CATALINA_BASE/conf/[enginename]/[hostname]/[webappname].xml

这些文件可以为特定应用程序提供外部配置,所以我认为这是开始的地方。这是我的尝试:

<Context>
  <Resources>
    <PreResources className="org.apache.catalina.webresources.DirResourceSet"
                  base="/home/tomcat/webapps/config/conf" webAppMount="/WEB-INF" />
  </Resources>
</Context>

我也尝试过另一个目录,在 webapps 之外,但它也没有用。有谁知道为什么它不起作用?这只是一个白日梦吗,我会被迫改变 war-files 还是执行维护者推荐的 deploy-stop-"patch in" config-start?

看来上面的工作正常。我只是将一个字母作为小写字母而不是大写字母放在基本路径中。

其中一个案例是当另一个人看了我实际写的内容时问题就解决了。

模组;您可以随意完全删除问题,也可以将其作为操作方法 post 供将来寻找如何解决相同问题的人使用。