繁体   English   中英

无法在简单的Java程序中读取cloud Foundry env变量(不使用spring)

[英]Unable to read cloud foundry env variables inside a simple java program (Not using spring)

我有一个简单的Java应用程序(不是Spring应用程序),想要从cloud Foundry env变量VCAP_SERVICES中获取Amazon RDS数据库参数。 我正在使用以下代码,但无法访问任何数据库。

我正在尝试图书馆首页上提供的示例代码之一。

Cloud Foundry应用程序日志:

2017-08-28T14:15:44.952-07:00 [APP/PROC/WEB/0] [ERR] WARNING: No suitable service info creator found for service employee-maria-rds. Did you forget to add a ServiceInfoCreator?
2017-08-28T14:15:44.952-07:00 [APP/PROC/WEB/0] [ERR] Aug 28, 2017 9:15:44 PM org.springframework.cloud.AbstractCloudConnector getServiceInfo

Java应用程序:

public class App {
    public static void main (String args[]) throws InterruptedException, SQLException {
        CloudFactory cloudFactory = new CloudFactory();
        Cloud cloud = cloudFactory.getCloud();
        // ServiceInfo has all the information necessary to connect to the underlying service
        List<ServiceInfo> serviceInfos = cloud.getServiceInfos();
        for (ServiceInfo serviceInfo : serviceInfos) {
            if (serviceInfo instanceof RelationalServiceInfo) {
                System.out.println(((RelationalServiceInfo) serviceInfo).getJdbcUrl());
            }
}}}

上面的代码将不打印任何内容。

Cloud Foundry环境变量:

{
  "staging_env_json": {},
  "running_env_json": {},
  "system_env_json": {
    "VCAP_SERVICES": {
      "mariaDB": [
        {
          "credentials": {
            "uri": "jdbc:mysql://db1.us-east-1.rds.amazonaws.com:3306/employee",
            "username": "xxxx",
            "password": "xxxx",
            "host": "db1.us-east-1.rds.amazonaws.com",
            "port": "3306",
            "database": "employee"
          },
          "syslog_drain_url": null,
          "volume_mounts": [],
          "label": "mariaDB",
          "provider": null,
          "plan": "Medium-Plan",
          "name": "employee-maria-rds",
          "tags": []
        },
        {
          "credentials": {
            "uri": "jdbc:mysql://db2.us-east-1.rds.amazonaws.com:3306/hcm",
            "username": "xxxx",
            "password": "xxxx",
            "host": "db2.us-east-1.rds.amazonaws.com",
            "port": "3306",
            "database": "hcm"
          },
          "syslog_drain_url": null,
          "volume_mounts": [],
          "label": "mariaDB",
          "provider": null,
          "plan": "Small-Plan",
          "name": "hcm-maria-db",
          "tags": []
        }
      ]
    }
  },
  "application_env_json": {
    "VCAP_APPLICATION": {
      "cf_api": "https://apps.abc.com",
      "limits": {
        "fds": 16384,
        "mem": 256,
        "disk": 256
      },
      "application_name": "java-main-application",
      "application_uris": [],
      "name": "java-main-application",
      "space_name": "development",
      "space_id": "a8844960-4d08-4d80-b589-4ea1473ed0bb",
      "uris": [],
      "users": null,
      "application_id": "004sdf3ef-3d7a-44d6-81d5-a04bwetf62e07",
      "version": "c31234g56-4f42-4454-b30e-540sdghh684d6",
      "application_version": "d2ggd656-4f42-4434-b30e-54g2348684d6"
    }
  }
}

pom.xml:

 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-cloudfoundry-connector</artifactId>
            <version>1.2.4.RELEASE</version>
        </dependency>
String getEnv = System.getenv("VCAP_SERVICES");
ObjectMapper objectMapper = new ObjectMapper();
Map<String, String> vcapMap = objectMapper.readValue(getEnv, Map.class);

vcapMap上方存储VCAP服务值,您可以打印这些值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM