简体   繁体   English

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

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

I have a simple java application (not spring one) that wanted to get amazon RDS database parameters from cloud foundry env variable VCAP_SERVICES. 我有一个简单的Java应用程序(不是Spring应用程序),想要从cloud Foundry env变量VCAP_SERVICES中获取Amazon RDS数据库参数。 I am using the following code but unable to access any of the databases. 我正在使用以下代码,但无法访问任何数据库。

I am trying one of the sample code provided on library home page. 我正在尝试图书馆首页上提供的示例代码之一。

Cloud foundry application log: 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 application : 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());
            }
}}}

Above code will print nothing. 上面的代码将不打印任何内容。

Cloud Foundry Env Variables: 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: 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);

Above vcapMap stores the VCAP Services values and you can print the values. vcapMap上方存储VCAP服务值,您可以打印这些值。

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

相关问题 有没有一种方法可以在不使用spring的情况下验证普通java应用程序(云铸造中的微服务)中approuter发送的oauth令牌 - Is there a way to validate oauth token sent by approuter in plain java application ( micro service in cloud foundry ) without using spring Play Framework 无法读取 Cloud Foundry 中的环境变量 - Play Framework unable to read environment variable in Cloud Foundry Cloud Foundry,运行任务,简单的 HelloWorld.java - Cloud Foundry, run-task, simple HelloWorld.java 将Java非Spring Web应用程序迁移到关键的Cloud Foundry - Migrate java non-spring web application to pivotal cloud foundry 部署和连接Cloud Foundry服务(MongoDB,Java,Spring Boot) - Deploying and Connecting cloud foundry service (MongoDB, Java, Spring Boot) Spring Boot应用程序在云铸造厂java.lang.IllegalStateException上崩溃 - spring boot app crashing on cloud foundry java.lang.IllegalStateException Cloud Foundry中的Spring Web App - Spring Web App in Cloud Foundry 无法在服务器上使用Java程序执行简单的“ whoami” unix命令 - Unable to execute a simple “whoami” unix command using java program on the server Cloud Foundry Java启动命令 - Cloud Foundry Java Startup Command 在Cloud Foundry中部署Java插件 - deploying java plugins in cloud foundry
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM