【问题标题】:WAS Liberty: DEV and UAT ConfigurationWAS Liberty:DEV 和 UAT 配置
【发布时间】:2016-01-25 20:35:38
【问题描述】:

我想知道配置 WAS Liberty 安装的最佳方式是什么,允许动态地从 DEV 环境配置切换到 UAT(测试)环境配置。

详细地说,我们的 glassfish 服务器有类似的设置,我们只需在 Glassfish 控制台中为两者配置系统属性。例如

hostname.uat="some uat value"
hostname.dev="some dev value"

在 Glassfish 的系统属性配置中删除“.uat”或“.dev”会激活该属性。在 Glassfish 中,这可以在应用程序运行时动态完成(无需重新启动)。

是否有或有人可以详细说明我如何在 WAS Liberty 中实现类似的设置?

谢谢你

【问题讨论】:

  • 您希望此属性在 Liberty 的开发版和测试版之间切换吗?还是您正在编写的某个应用的开发和测试版本?
  • @aguibert 只部署了一个应用程序。该应用程序仅通过 glassfish 中设置的系统属性配置读取系统属性。这些属性可以动态更改,并由部署的应用程序读取,从而允许应用程序与 dev 或 uat 通信。
  • 好的,所以您有 1 个应用程序副本和 1 个服务器实例,但您希望能够动态更改服务器配置?要在 Liberty 上执行此操作,您可以保留 server.xml 的 2 个不同副本,并根据您要使用的配置交换文件。 Liberty 服务器的所有配置都可以在单个 server.xml 文件中完成。
  • @aguibert 谢谢你。是的 1 个副本和 1 个服务器实例。我目前在 server.env 文件中配置了我的属性。这些属性是名称/值对,我不确定是否将它们放在 server.xml 中,因为它是一个 xml 文件。例如,这里有一个属性 admin.email=dev.admin@domain.com,uat 的相同属性是 admin.email=uat.admin@domain.com。 server.xml 如何读取名称/值对等?
  • 啊,你要设置环境变量。然后你想要server.env 文件。我已经用如何做到这一点更新了我的答案。

标签: websphere-liberty


【解决方案1】:

您可以在两个可能的位置创建server.env 文件:
${wlp.install.dir}/etc/server.env(属性应用于所有服务器)或
${server.config.dir}/server.env(属性仅应用于一台服务器)
并在该文件中指定任何环境变量。

例如:

# Specify properties and values
admin.email=dev.admin@domain.com
admin.email.uat=uat.admin@domain.com

要在应用程序环境(例如 Servlet)中访问这些属性,请执行以下操作:

System.getenv("admin.email"); // returns "dev.admin@domain.com"

还可以在server.env 文件中指定其他有用的属性,例如JAVA_HOMEWLP_USER_DIRWLP_OUTPUT_DIRWLP_DEBUG_ADDRESS

有关 IBM 的完整文档,请参阅:
Customizing the Liberty Environment

【讨论】:

  • server.env 是否被监控/重新加载?
  • 不,server.env 仅在服务器启动时加载
  • 我已经研究过了,您可以更改 Liberty server.xml(或包含的文件)中属性的值,并且更改是动态的。有谁知道是否有一种方法可以在 server.xml 中定义用户定义的属性,以后可以将其作为应用程序中的系统属性读取?
  • server.xml 配置元素确实能够响应动态变化。但是,没有任何 server.xml 元素可供用户应用程序读取。
  • 那么公平地说,IBM Liberty 无法执行与 Glassfish 相同的设置吗?也就是说,没有办法创建动态系统属性?
【解决方案2】:

我们所做的是使用 Ansible 生成 Liberty 服务器,其中可以根据环境将变量添加到 ansible 清单中。

因此,我们的部署实质上是通过使用 ansible 模板和角色根据需要删除并重新创建 Liberty 服务器。

最后,我们在部署时使用 Hasicorp Vault(您也可以使用 ansible-vault)获取凭据或机密以获取凭据。然后将其作为 JSON 注入 Ansible 并用于标记 server.xml 和其他相关配置文件。

【讨论】:

    猜你喜欢
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2012-01-06
    • 1970-01-01
    相关资源
    最近更新 更多