一尘不染

从.war文件外部化Tomcat Webapp配置

linux

我在Tomcat 7中配置Web应用程序时遇到问题。在我的WAR文件中,有一个属性文件myApp/WEB- INF/classes/myProps.props,它包含特定于环境的属性。我试图在服务器上覆盖该配置文件,以便将同一WAR文件部署到多个环境。

我听说有一种方法可以使用中的替换配置文件来执行此操作tomcat/conf/Catalina/myApp。这是我很难弄清楚的方法。

另外,myApp.war是同一台Tomcat服务器上运行的许多软件之一,它不能作为本地主机运行。我希望能够为多个Web应用程序解决此问题。

Server version: Apache Tomcat/7.0.23
Server built:   Nov 20 2011 07:36:25
Server number:  7.0.23.0
OS Name:        Linux

阅读 445

收藏
2020-06-02

共1个答案

一尘不染

tomcat/conf/Catalina/<host>可以包含上下文描述符,这些上下文描述符使您可以配置很多东西,包括定义“环境条目”,可以通过Java通过JNDI访问这些条目。有很多方法可以使用它。我个人设置了一个环境条目,它是我的属性文件的文件系统路径。我的应用程序被构建为检查此项,如果不存在,请在类路径中查找文件。这样,在dev中,我们就在类路径上具有dev属性,但是在构建和部署时,我们将其指向外部文件。

在Tomcat网站上有很好的文档来配置上下文。有关如何创建文件以及将文件放在何处的详细信息,请参见“
定义上下文”
部分

举个例子,如果你的主机的名称myHost和您的应用程序被命名为war文件myApp.warwebapps目录,那么你可以创建tomcat/conf/Catalina/myHost/myApp.xml与此内容:

<Context>
    <Environment name="configurationPath" value="/home/tomcat/myApp.properties" type="java.lang.String"/>
</Context>

然后,从您的代码中进行JNDI查找java:comp/env/configurationPath(此处的确定性为95%)以获取该字符串值。

2020-06-02