【问题标题】:Where to put deployment specific properties in Java在 Java 中放置特定于部署的属性的位置
【发布时间】:2022-11-12 00:31:43
【问题描述】:

为了在 Java 中构建 Web 应用程序,我将 Tomcat 作为 Eclipse 中的集成服务器进行开发。一些目标系统使用 JBoss,而其他目标系统使用 WebLogic 12C。

应用程序相关设置保存在 app.properties 文件中并在运行时加载。与给定的 here 相同。

我应该在哪里保留特定于部署的属性?即我想保留诸如“站点标题”、“公司名称”、“数据库用户”等项目,这些项目对于每个部署都会有所不同。例如,如果我为两个客户部署相同的应用程序,我应该能够更改“公司名称”。

使用 .properties 文件时,我必须保留相同代码的单独分支并为每个部署重新编译。

这样做的推荐做法/方法是什么?

【问题讨论】:

    标签: java jboss weblogic


    【解决方案1】:

    如果这是一个支持像 maven 这样的构建工具的应用程序,那么您可以使用 maven 为多家公司配置多个配置文件,并将该信息保存在属性文件中,例如 application-compA.properties、application-compB.properties 等。所以当你建造你将为compA compB等建造。

    【讨论】:

    • 谢谢。正如我所说,由于将在所有站点部署相同的代码,我宁愿不重建而是拥有单独的属性文件。嗯...我可以从项目外部加载属性文件吗?即如果我将它复制到 /etc 并从那里加载?
    【解决方案2】:

    在 JBoss 中,您有覆盖选项:使用您的具体情况创建部署的覆盖。 https://access.redhat.com/solutions/383393 我不知道Weblogic。 否则,正如@BuffChuck 所写,您需要在构建级别进行管理。

    【讨论】:

      【解决方案3】:

      标准做法是使用从文件系统加载的外部属性文件,您可以为每个环境自定义该文件。以 Spring boot 为例(https://docs.spring.io/spring-boot/docs/1.0.1.RELEASE/reference/html/boot-features-external-config.html),它按以下顺序在不同位置查找 application.properties 文件...

      1. 当前目录的 /config 子目录。
      2. 当前目录
      3. 类路径 /config 包
      4. 类路径根

        将 Spring Boot 应用程序打包为 war 文件以部署在 weblogic 或 jboss 等 servlet 容器中时,您可以使用 servlet 上下文参数指定在何处查找外部化属性文件...

        <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
        
          <context-param>
            <param-name>spring.config.additional-location</param-name>
            <param-value>file:./config/sparq/dms-oncall-messaging.yml</param-value>
          </context-param>
          
        
        </web-app>
        

        如果您不使用 Spring Boot,您仍然可以采用类似的方法来加载外部属性文件以自定义每个环境的配置。因此,您可以提供一个打包在您的 jar/war 文件中的默认属性文件,该文件可以被外部化的属性文件覆盖。

      【讨论】:

        猜你喜欢
        • 2022-01-05
        • 1970-01-01
        • 1970-01-01
        • 2011-11-02
        • 2011-08-28
        • 1970-01-01
        • 1970-01-01
        • 2015-12-21
        • 1970-01-01
        相关资源
        最近更新 更多