如何为具有多个虚拟主机的Tomcat放置配置文件?

时间:2016-02-05 15:48:38

标签: java spring tomcat

我有Tomcat(7或8)有两个虚拟主机,两个应用程序克隆应该可以工作。

每个应用程序都应该拥有自己的配置文件。它不应该放在* .war中 - 只能放在服务器环境中的某个地方。

当我在Tomcat中有一个应用程序时,我可以将配置文件放在

<context:property-placeholder location="file:${catalina.home}/conf/myapp.properties"/>

由于applicationContext.xml,Spring会找到我的配置文件。

但是当我有两台主机时,我应该将配置文件放在不同的目录中。 我在server.xml中的Host中添加了Context属性

<Context docBase="" path="XXX">
    <Environment name="app.name" value="myapp1" type="java.lang.String" override="false"/>
</Context>

这里第一个主机获取环境变量“app.name”,如“myapp1”。第二个主机使用“myapp2”值获取此变量。 我已经修改了

但Tomcat属于FileNotFoundException

Context initialization failed
org.springframework.beans.factory.BeanInitializationException: Could not load properties; nested exception is java.io.FileNotFoundException: ...\conf\${app.name}\myapp.properties (The system cannot find the path specified)

为什么?

1 个答案:

答案 0 :(得分:1)

您配置的环境属性是JNDI查找属性。 我不认为它可以被视为正常的系统属性,就像在 “CATALINA_HOME”。

环境 - 配置将通过JNDI InitialContext公开的标量环境条目的名称和值(相当于在Web应用程序部署描述符中包含<env-entry>元素)。