2

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

  1. 一种是通过 JVM 选项传递给 setenv.sh 文件中设置的 tomcat。据我所知,每次重新部署都需要重新启动服务器。
  2. 在属性文件中指定属性值。需要在文件中手动设置值,并在每次重新部署相同版本的应用程序之前重建应用程序。
  3. 使用 spring 时,在 applicationContext.xml 文件中定义的一些 bean 中指定属性值。再次需要手动方法和应用程序重建。
  4. 在数据库中存储配置。这要求我们知道存储此类配置的数据库的连接属性。

现在,如果我计划在每次部署/重新部署应用程序时更改某些属性变量,例如 IP 地址、连接数、端口号或其他一些此类变量,我应该遵循什么策略?是否有一种流行的、被广泛接受的方式将此类属性值传递给部署在 tomcat 中的 Web 应用程序?如果我将属性值作为 JVM 选项传递,是否需要重新启动 tomcat 服务器?

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

4

1 回答 1

1

我认为 JNDI 的发明正是为了您所要求的目的:

  • 您不必修改 JVM 选项
  • 您不必每次更改这些选项时都重新启动 Tomcat
  • 你不必重建你的应用程序
  • 您可以从外部/以编程方式更改这些值。我相信 Tomcat 允许这样做,或者即使不允许 - 编写类似可设置 MBean 之类的东西应该不难,它可以通过 JMX 设置相关属性
于 2012-10-24T11:35:49.393 回答