我在Tomcat 7中配置Web应用程序时遇到问题。在我的WAR文件中,有一个属性文件myApp/WEB- INF/classes/myProps.props,它包含特定于环境的属性。我试图在服务器上覆盖该配置文件,以便将同一WAR文件部署到多个环境。
myApp/WEB- INF/classes/myProps.props
我听说有一种方法可以使用中的替换配置文件来执行此操作tomcat/conf/Catalina/myApp。这是我很难弄清楚的方法。
tomcat/conf/Catalina/myApp
另外,myApp.war是同一台Tomcat服务器上运行的许多软件之一,它不能作为本地主机运行。我希望能够为多个Web应用程序解决此问题。
myApp.war
Server version: Apache Tomcat/7.0.23 Server built: Nov 20 2011 07:36:25 Server number: 7.0.23.0 OS Name: Linux
您tomcat/conf/Catalina/<host>可以包含上下文描述符,这些上下文描述符使您可以配置很多东西,包括定义“环境条目”,可以通过Java通过JNDI访问这些条目。有很多方法可以使用它。我个人设置了一个环境条目,它是我的属性文件的文件系统路径。我的应用程序被构建为检查此项,如果不存在,请在类路径中查找文件。这样,在dev中,我们就在类路径上具有dev属性,但是在构建和部署时,我们将其指向外部文件。
tomcat/conf/Catalina/<host>
在Tomcat网站上有很好的文档来配置上下文。有关如何创建文件以及将文件放在何处的详细信息,请参见“ 定义上下文” 部分。
举个例子,如果你的主机的名称myHost和您的应用程序被命名为war文件myApp.war的webapps目录,那么你可以创建tomcat/conf/Catalina/myHost/myApp.xml与此内容:
myHost
webapps
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%)以获取该字符串值。
java:comp/env/configurationPath