簡體   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