Java 中 Cloudfoundry VCAP_SERVICE 的包装器?

Wrapper(s) for Cloudfoundry VCAP_SERVICE in Java?

使用 VCAP_SERVICE environment variable (java.lang.System.getenv("VCAP_SERVICES") 需要处理 JSON 字符串,该字符串可能具有非常复杂的结构 - 但遵循可预测的模式。

是否有一个常用的帮助程序 class 来执行 JSON 解析以便于访问变量? (我知道如何解析原始 JSON,所以我正在寻找一个 CF 特定的,它有很好的吸气剂来读取变量)。

我找到了a project that hasn't been updated in 3 years - is that the library to use? Or would one use the CF Client lib?

理想情况下应该是这样的:

   VCapService config = new VCapService();
   String somevar = config.get("/user-provided/special/test","default-if-no-cloud");

我对查询不挑剔(上面有点像URI或XPath)。

Spring 云连接器就是您想要的:https://github.com/spring-cloud/spring-cloud-connectors

尽管名称如此,核心 Spring 云连接器库并不依赖于 Spring 框架,而是一个普通的旧 Java 库。请参阅此处有关使用库的核心获取从 VCAP_SERVICES:https://github.com/spring-cloud/spring-cloud-connectors/tree/master/spring-cloud-core#spring-cloud-core 解析的对象模型的文档。

您不必开发依赖于 Cloud Foundry 的应用程序(例如包装和转换应用程序中的 VCAP_SERVICES)。相反,您可以在启动应用程序之前解析 VCAP_SERVICES 并将其转换为更易于阅读的环境变量。这是一个使用名为 jq 的工具(命令行 JSON 处理器)的示例:

MNG=$(echo $VCAP_SERVICES | jq '.mongodb[0].credentials.uri')
export MONGO_URL=$(echo $MNG | cut -d "\"" -f 2)

您可以在启动应用程序之前将这两个代码放入启动脚本中,它会将 VCAP_SERVICES 转换为 "light" 和可消化的环境变量。