Deployment 为Java web应用程序处理特定于环境的设置的最佳实践?

Deployment 为Java web应用程序处理特定于环境的设置的最佳实践?,deployment,web-applications,installation,Deployment,Web Applications,Installation,我有一个Java web应用程序,它在一个属性文件中卸载一些特定于环境的设置(Hibernate配置、所需的目录路径等),该文件最终打包在已部署的WAR中。如果我想发布此web应用程序,处理这些设置的最佳方式是什么?要求用户打开WAR,更新属性文件,重新打包WAR,然后部署是不可行的。我在考虑创建一个安装程序(例如NSIS、WiX),该安装程序请求属性,在WAR中写入属性,然后请求WAR的部署位置。另一种选择是将属性文件置于WAR外部,根据惯例,web应用程序将知道从何处读取该文件。在这种情况下

我有一个Java web应用程序,它在一个属性文件中卸载一些特定于环境的设置(Hibernate配置、所需的目录路径等),该文件最终打包在已部署的WAR中。如果我想发布此web应用程序,处理这些设置的最佳方式是什么?要求用户打开WAR,更新属性文件,重新打包WAR,然后部署是不可行的。我在考虑创建一个安装程序(例如NSIS、WiX),该安装程序请求属性,在WAR中写入属性,然后请求WAR的部署位置。另一种选择是将属性文件置于WAR外部,根据惯例,web应用程序将知道从何处读取该文件。在这种情况下,最佳做法是什么?

一些需要这种配置的项目,面对这个问题,可以使用在部署它的服务器上构建项目(以及.war)的方法

因此,不是:

  • 将预打包的.war文件复制到有意义的位置
你会得到:

  • 从SCM中检查源代码(Subversion、CVS等)
  • 根据口味配置
  • 构建项目(使用Maven或Ant自动化)
  • 部署项目(也通常使用Maven或Ant自动化)

从这里,您还可以通过将每个服务器的配置文件检查到SCM中来获得乐趣。这种方法允许您对配置更改进行版本和审核。

我在项目中也遇到了同样的问题。我之前的开发人员对解决方案进行了粗略的修复,在hibernate.hbm.cfg.xml文件中添加了所有必需的配置,并对它们进行了注释。根据需要取消注释所需的配置。然而,有一个更好的办法来解决这个问题

  • 使用配置文件夹架构
  • 使用配置参数读取器
  • ConfigurationReader组件的使用
  • 资料来源: