在tomcat中重新部署.war的新版本时更改属性值

时间:2012-10-24 09:07:39

标签: java tomcat web-applications properties jvm-arguments

在我使用tomcat作为我的app服务器的Java Web应用程序中,我感兴趣的是在部署/重新部署时将特定属性的不同值传递给应用程序的方法。
我知道有几种方法:

  1. 一个是通过传递给setenv.sh文件中设置的tomcat的JVM选项。据我所知,每次重新部署都需要重新启动服务器。
  2. 指定属性文件中的属性值。需要在文件中手动手动设置的值,并在每次重新部署相同版本的应用程序之前重建应用程序。
  3. 使用spring时,在applicationContext.xml文件中定义的某个bean中指定属性值。再次需要手动方法和应用程序重建。
  4. 在数据库中存储配置。这要求我们知道存储此类配置的数据库的连接属性。
  5. 现在,如果我计划在每次部署/重新部署应用程序时更改某些属性变量(如IP地址,连接数,端口号或其他某些变量),我应该遵循什么策略?是否有一种流行的公认方法将这些属性值传递给部署在tomcat中的Web应用程序?如果我将属性值作为JVM选项传递,是否有必要重新启动tomcat服务器?

    或者是否有其他通用方法来配置我上面没有提到的部署参数?我更喜欢一个可以通过编程方式轻松实现自动化的过程(比如传递JVM选项),而不是在每次部署之前手动设置属性(比如设置属性文件)。在重新部署之前,每次还应该不需要重建相同的版本。

1 个答案:

答案 0 :(得分:1)

我认为JNDI的发明完全符合您的要求:

  • 您不必修改JVM选项
  • 每次更改这些选项时都不必重新启动Tomcat
  • 您无需重建应用
  • 您可以从外部/编程方式更改这些值。我相信Tomcat允许,或者即使不是 - 编写像可设置的MBean这样的东西也不难,它会通过JMX设置相关的属性