java - 配置 war 内部依赖工件的属性

标签 java jakarta-ee jar java-8 war

我正在编写一个 jee 应用程序,作为 WAR 部署到容器中。

此应用程序依赖于(maven dep)打包为 JAR 的 java lib。

该库包含 jee 应用程序用来与后端通信的客户端。

该库接受后端的基本 uri(主机+端口+上下文路径)作为配置。

从 jee 应用程序配置库的最佳方法是什么,以便可以为多个环境提供配置(例如后端生产 URI 与测试 URI 不同)?

我读到了有关 @Alternative 注释和 ContextParam 的内容,但两者似乎都是 jee 特定的,又名普通 java 无法理解的...

Maven Assembly 似乎不是一种可行的方法,因为它意味着必须为每个环境部署一个工件到我们的 Maven 存储库。

更新1

如果 jee 应用程序为每个环境(开发、测试、生产)包含一个属性文件,并且可以通过普通的旧 java 构造函数将属性传递到 lib,会怎么样?

最佳答案

我将尝试为该主题提供一些答案/想法。我会遵循这种方法:

  • 在库中提供后备配置文件。
  • 在库中实现默认行为,在类路径上查找优先级高于后备的预定义配置文件(例如通过 java.lang.Class.getResourceAsStream(String) )
  • 让库提供 Java-API 以从不同位置/资源读取配置。
  • 让该库提供 Java-API,以便直接从客户端代码更改特定配置设置。
  • 您还可以通过系统环境变量和/或命令行参数来配置您的库。

这样,库的客户端就可以根据其技术环境来决定配置所在的位置。

在 JEE 中,您可以使用 ContextParam 来设置配置资源的位置,或者设置特定的配置属性,或者只是在类路径上的标准位置提供配置资源。

如果您使用 Spring 或类似的框架,您就有很多其他可能性来为应用程序提供配置。 Spring Boot 对此提供了一些开箱即用的良好行为。

基本思想是您必须向应用程序运算符(operator)提供影响配置的方法。然后,可以根据它是在开发人员的机器上、在单元/集成测试条件下、在临时环境中还是在生产中运行来调整配置。

关于java - 配置 war 内部依赖工件的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49489212/

相关文章:

java - 如何以编程方式设置选中的单选按钮(动态创建的单选按钮)android

java - 如何让 JLabel 准确预测它应该有多宽?

java - 将文件分发到多个文件夹而不是单个文件夹的原因

java - 如何使用 Spring 设置 Eclipse 进行 Java Web 开发?

java - 使用 iText/任何其他库使用现成的数据通过 Java(网络应用程序)生成 PDF 报告

java - 使用 Apache.POI 并仅在从 JAR 文件运行时收到错误消息

java - 在Hadoop上使用Jar文件运行Java代码

java - 来自与背景匹配的字符串数组的随机数

java - 如何使用 ApacheDs 将 POJO 映射到目录?

java - 带有 JAR 的 WAR 项目中的 "could not create Vfs.Dir"