动态更改jdbc.properties和log4j.properties的文件目录

时间:2012-09-12 13:40:17

标签: java spring tomcat web.xml

我正在使用Java Web Project。 我需要根据环境更改文件“jdbc.properties”和“log4j.properties”的文件夹,因为测试,演示和发布对这些文件具有不同的值。

我有这个文件夹和子文件夹:

C:\ myProject的\ CONF \ dev的 C:\ myProject的\ CONF \测试 C:\ myProject的\ CONF \演示

我需要在每个文件夹中放入不同的jdbc.properties和log4j.properties文件

C:\ myProject的\ CONF \ dev的\ log4j.properties C:\ myProject的\ CONF \ dev的\ jdbc.properties

C:\ myProject的\ CONF \测试\ log4j.properties C:\ myProject的\ CONF \测试\ jdbc.properties

C:\ myProject的\ CONF \演示\ log4j.properties C:\ myProject的\ CONF \演示\ jdbc.properties

这三个项目位于同一个服务器和同一个Apache(它是一个Web项目)

首先,我做了一些更改,使用Windows系统变量来获取父文件夹(c:\ myProject)。为此,我在Spring appContext文件中创建了这个:

<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>file:${PARENT_FOLDER}/conf/dev/jdbc.properties</value> 
</property>
</bean>

“PARENT_FOLDER”在Windows环境变量/系统变量

上定义

这些更改无效。

但是,正如你所看到的,我总是在“/ conf / dev”

上找文件

我需要动态路径的“dev”部分。

我无法使用Windows环境变量/系统变量,因为3个环境部署在同一个服务器上。

我正在尝试在web.xml上使用“属性”(使用),但我不知道如何在我的Spring appContext文件中找到该属性。

我这样定制了这个属性:

<env-entry>
    <env-entry-name>ENVIRONMENT</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>Dev</env-entry-value>
</env-entry>

但我不知道如何在Spring上访问“ENVIRONMENT”属性

我不知道该怎么办。我有点绝望

有人可以帮助我吗?

谢谢,抱歉我的英语不好

1 个答案:

答案 0 :(得分:0)

您是否考虑过使用JNDI

使用JNDI,您将在tomcat中定义数据库连接属性。这样,您的弹簧配置与环境无关,您可以在所有环境中部署相同的战争。另请参阅this

如果您需要在本地运行它,您可以随时使用“新”spring environment profiles功能。

其他选项(如果JNDI不是一个选项并且假设您使用maven)是maven replacer插件,您将在构建时生成db.properties。