不同服务器的不同配置文件

时间:2009-07-16 18:44:44

标签: java configuration

你好,你怎么解决这个问题?

我有一个应用程序,其中我有一些配置文件,我制作war文件并将其部署在tomcat上。

但与此同时,我必须制作war文件并在不同的上下文和/或具有修改的配置文件的服务器上部署相同的应用程序。

我可以在蚂蚁中创建自己的任务,并替换所需的参数,但是有可能转移到maven,无论如何我不确定。或者我可以使用像spring的属性占位符配置器或jgroups

这样的东西

4 个答案:

答案 0 :(得分:1)

Spring可以通过各种方式很好地处理这个问题。我发现最有用和灵活的方法是在每个环境中设置一个系统变量,该系统变量指定环境名称,例如test,dev,int,prod等。

然后,

Spring可以使用此系统变量来加载正确的属性文件。根据您的需要,这些属性文件可以与应用程序捆绑在一起,也可以从外部位置加载。这里有一个类似方法的例子:

http://www.developer.com/java/ent/print.php/3811931

答案 1 :(得分:0)

我将打包为WAR的Spring应用程序部署到Tomcat或WebLogic,而不做任何更改。它将包含Tomcat的META-INF / context.xml和WebLogic的weblogic.xml。不用担心,没有变化。

答案 2 :(得分:0)

我们所做的是为特定于环境的属性创建文件夹结构。在该文件夹下,我们为每个特定的部署环境创建了文件夹,包括本地开发。它看起来像这样:

Project
\
 -Properties
 \
  -Local (your PC)
  -Dev (shared dev server)
  -Test (pre-production)
  -Prod (Production)

在每个文件夹中,我们放置属性/配置文件的并行副本,并将不同的配置仅放在相应文件夹中的文件中。秘诀是控制部署环境的类路径。我们在每台服务器上定义了一个PROPERTIES类路径条目。在Prod上,它将设置为“$ ProjectDir / Properties / Prod”,而在测试时,相同的变量将被设置为“$ ProjectDir / Properties / Test”。

这样我们可以为预先配置的dev / test / prod数据库建立数据库连接字符串,而不是每次我们想要为不同的环境构建时都必须在属性文件中签出/。

这也意味着我们可以将完全相同的.war / .ear文件部署到Test and Prod而无需重建。通过在每个环境中使用相同的JNDI名称但使用特定于该环境的值,以类似方式处理的属性文件中未声明的任何属性。

答案 3 :(得分:0)

http://www.gifnoc.com/config可以提供帮助,因为它将配置存储在一个中心位置,而客户端正在为不同的环境提供配置