本文使用的例子源代码在我的github上。

在我的公众号文章在SAP云平台的CloudFoundry环境下消费ABAP On-Premise OData服务介绍了如何通过Cloud Connector连接ABAP On-Premise系统。

我创建了三个service的实例,详情如上图和下表:

服务类型 服务实例名称
connectivity connectivity-jerry-demo
destination jerry-destination-lite
xsuaa xsuaa-jerry-demo

这三个服务实例的名称维护在应用的manifest.xml中。

将应用使用cf push部署到CloudFoundry之后,在Cockpit里能观察到生成的系统变量VCAP_SERVICES:

在Java代码里,使用如下代码将该环境变量的值读取出来存储到字符串中。


private static final String VCAP_SERVICES = System.getenv("VCAP_SERVICES");

该Json对象的具体字段通过getJSONObject读取出来。

下图是connectivity实例的credentials明细:

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

附录

VCAP_SERVICES全部内容:


{
"VCAP_SERVICES": {
"xsuaa": [
{
"name": "xsuaa-jerry-demo",
"instance_name": "xsuaa-jerry-demo",
"binding_name": null,
"credentials": {
"uaadomain": "authentication.eu10.hana.ondemand.com",
"tenantmode": "dedicated",
"sburl": "https://internal-xsuaa.authentication.eu10.hana.ondemand.com",
"clientid": "sb-connectivity-jerry-demo!t3704",
"verificationkey": "-----BEGIN PUBLIC KEY-----MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwThn6OO9kj0bchkOGkqYBnV1dQ3zU/xtj7Kj7nDd8nyRMcEWCtVzrzjzhiisRhlrzlRIEY82wRAZNGKMnw7cvCwNixcfcDJnjzgr2pJ+5/yDZUc0IXXyIWPZD+XdL+0EogC3d4+fqyvg/BF/F0t2hKHWr/UTXE6zrGhBKaL0d8rKfYd6olGWigFd+3+24CKI14zWVxUBtC+P9Fhngc9DRzkXqhxOK/EKn0HzSgotf5duq6Tmk9DCNM4sLW4+ERc6xzrgbeEexakabvax/Az9WZ4qhwgw+fwIhKIC7WLwCEJaRsW4m7NKkv+eJR2LKYesuQ9SVAJ3EXV86RwdnH4uAv7lQHsKURPVAQBlranSqyQu0EXs2N9OlWTxe+FyNkIvyZvoLrZl/CdlYc8AKxRm5rn2/88nkrYQ0XZSrnICM5FRWgVF2hn5KfZGwtBN85/D4Yck6B3ocMfyX7e4URUm9lRPQFUJGTXaZnEIge0R159HUwhTN1HvyXrs6uT1ZZmW+c3p47dw1+LmUf/hIf8zd+uvHQjIeHEJqxjqfyA8yqAFKRHKVFrwnwdMHIsRap2EKBhHMfeVf0P2th5C9MggYoGCvdIaIUgMBX3TtCdvGrcWML7hnyS2zkrlA8SoKJnRcRF2KxWKs355FhpHpzqyZflO5l98+O8wOsFjGpL9d0ECAwEAAQ==-----END PUBLIC KEY-----",
"xsappname": "connectivity-jerry-demo!t3704",
"identityzone": "jerry",
"identityzoneid": "f3bd7f84-ebf1-4c11-b7c7-a278ebd54dcb",
"clientsecret": "WAxzZxYQCgB7Dkml8dFdU+kaLSE=",
"tenantid": "f3bd7f84-ebf1-4c11-b7c7-a278ebd54dcb",
"url": "https://jerry.authentication.eu10.hana.ondemand.com"
},
"syslog_drain_url": null,
"volume_mounts": [],
"label": "xsuaa",
"provider": null,
"plan": "application",
"tags": [
"xsuaa"
]
}
],
"connectivity": [
{
"name": "connectivity-jerry-demo",
"instance_name": "connectivity-jerry-demo",
"binding_name": null,
"credentials": {
"uaadomain": "authentication.eu10.hana.ondemand.com",
"onpremise_proxy_port": "20003",
"tenantmode": "dedicated",
"clientid": "sb-clone5282c913c9164bb284239adcc4d74210!b3704|connectivity!b17",
"verificationkey": "-----BEGIN PUBLIC KEY-----MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwThn6OO9kj0bchkOGkqYBnV1dQ3zU/xtj7Kj7nDd8nyRMcEWCtVzrzjzhiisRhlrzlRIEY82wRAZNGKMnw7cvCwNixcfcDJnjzgr2pJ+5/yDZUc0IXXyIWPZD+XdL+0EogC3d4+fqyvg/BF/F0t2hKHWr/UTXE6zrGhBKaL0d8rKfYd6olGWigFd+3+24CKI14zWVxUBtC+P9Fhngc9DRzkXqhxOK/EKn0HzSgotf5duq6Tmk9DCNM4sLW4+ERc6xzrgbeEexakabvax/Az9WZ4qhwgw+fwIhKIC7WLwCEJaRsW4m7NKkv+eJR2LKYesuQ9SVAJ3EXV86RwdnH4uAv7lQHsKURPVAQBlranSqyQu0EXs2N9OlWTxe+FyNkIvyZvoLrZl/CdlYc8AKxRm5rn2/88nkrYQ0XZSrnICM5FRWgVF2hn5KfZGwtBN85/D4Yck6B3ocMfyX7e4URUm9lRPQFUJGTXaZnEIge0R159HUwhTN1HvyXrs6uT1ZZmW+c3p47dw1+LmUf/hIf8zd+uvHQjIeHEJqxjqfyA8yqAFKRHKVFrwnwdMHIsRap2EKBhHMfeVf0P2th5C9MggYoGCvdIaIUgMBX3TtCdvGrcWML7hnyS2zkrlA8SoKJnRcRF2KxWKs355FhpHpzqyZflO5l98+O8wOsFjGpL9d0ECAwEAAQ==-----END PUBLIC KEY-----",
"xsappname": "clone5282c913c9164bb284239adcc4d74210!b3704|connectivity!b17",
"identityzone": "jerry",
"clientsecret": "nyiGD9QQSOZO+NTeEJdexWWjxYY=",
"tenantid": "f3bd7f84-ebf1-4c11-b7c7-a278ebd54dcb",
"url": "https://jerry.authentication.eu10.hana.ondemand.com",
"onpremise_proxy_host": "10.0.85.1"
},
"syslog_drain_url": null,
"volume_mounts": [],
"label": "connectivity",
"provider": null,
"plan": "lite",
"tags": [
"connectivity",
"conn",
"connsvc"
]
}
],
"destination": [
{
"name": "jerry-destination-lite",
"instance_name": "jerry-destination-lite",
"binding_name": null,
"credentials": {
"uaadomain": "authentication.eu10.hana.ondemand.com",
"tenantmode": "dedicated",
"clientid": "sb-clone39a01503ac1845fbbda5d5ffccb1a469!b3704|destination-xsappname!b404",
"instanceid": "39a01503-ac18-45fb-bda5-d5ffccb1a469",
"verificationkey": "-----BEGIN PUBLIC KEY-----MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwThn6OO9kj0bchkOGkqYBnV1dQ3zU/xtj7Kj7nDd8nyRMcEWCtVzrzjzhiisRhlrzlRIEY82wRAZNGKMnw7cvCwNixcfcDJnjzgr2pJ+5/yDZUc0IXXyIWPZD+XdL+0EogC3d4+fqyvg/BF/F0t2hKHWr/UTXE6zrGhBKaL0d8rKfYd6olGWigFd+3+24CKI14zWVxUBtC+P9Fhngc9DRzkXqhxOK/EKn0HzSgotf5duq6Tmk9DCNM4sLW4+ERc6xzrgbeEexakabvax/Az9WZ4qhwgw+fwIhKIC7WLwCEJaRsW4m7NKkv+eJR2LKYesuQ9SVAJ3EXV86RwdnH4uAv7lQHsKURPVAQBlranSqyQu0EXs2N9OlWTxe+FyNkIvyZvoLrZl/CdlYc8AKxRm5rn2/88nkrYQ0XZSrnICM5FRWgVF2hn5KfZGwtBN85/D4Yck6B3ocMfyX7e4URUm9lRPQFUJGTXaZnEIge0R159HUwhTN1HvyXrs6uT1ZZmW+c3p47dw1+LmUf/hIf8zd+uvHQjIeHEJqxjqfyA8yqAFKRHKVFrwnwdMHIsRap2EKBhHMfeVf0P2th5C9MggYoGCvdIaIUgMBX3TtCdvGrcWML7hnyS2zkrlA8SoKJnRcRF2KxWKs355FhpHpzqyZflO5l98+O8wOsFjGpL9d0ECAwEAAQ==-----END PUBLIC KEY-----",
"xsappname": "clone39a01503ac1845fbbda5d5ffccb1a469!b3704|destination-xsappname!b404",
"identityzone": "jerry",
"clientsecret": "QCnO+2k8gvUkdTyiCZI5rhzylbQ=",
"tenantid": "f3bd7f84-ebf1-4c11-b7c7-a278ebd54dcb",
"uri": "https://destination-configuration.cfapps.eu10.hana.ondemand.com",
"url": "https://jerry.authentication.eu10.hana.ondemand.com"
},
"syslog_drain_url": null,
"volume_mounts": [],
"label": "destination",
"provider": null,
"plan": "lite",
"tags": [
"destination",
"document"
]
}
],
"application-logs": [
{
"name": "jerry-log",
"instance_name": "jerry-log",
"binding_name": null,
"credentials": {},
"syslog_drain_url": "https://10.0.104.16:4433/syslogv2/ZmE4OTNmMjYtNjllZS00YTRhLWFhMDQtOGY4YWUwNjc2NDc1L2Nvbm5lY3Rpdml0eS1qZXJyeS1kZW1vLzY5YWJmZDQ2LWQyMjgtNDkwMy1iMjQ1LWRlODhjZWZmMzY0Mi9kZXYvMDE2ZGUwODktMDc0MS00NzlhLTgyOGEtNDVjNGVmMTY5MzUyL0kwNDI0MTZ0cmlhbF9qZXJyeS8wNWMyYzY0Ny1lYjYwLTQwYjQtYjhiYi02NTEyYTBlZmQ2NjIvYXBwbGljYXRpb24tbG9ncy8zZTQ2NmZjNi04MzNlLTQzMGEtYTVhMS1iOWFhMjMxOTUwYzgvbGl0ZS81MWYzYWE3Mi1lYzE4LTQ4YTgtYTVjNS1lNGJlMWVlMDQ2MTUvamVycnktbG9nLzA3Y2MwOWZlZTFmM2VjNDNhYWIzZmMzMTAwMzQ5NTMwYmIzMjJmODE0NDE1ZGI3MTBkM2JlM2NmMDliNTI4Mjc",
"volume_mounts": [],
"label": "application-logs",
"provider": null,
"plan": "lite",
"tags": []
}
]
}
}
{
"VCAP_APPLICATION": {
"cf_api": "https://api.cf.eu10.hana.ondemand.com",
"limits": {
"fds": 16384,
"mem": 512,
"disk": 1024
},
"application_name": "connectivity-jerry-demo",
"application_uris": [
"connectivity-jerry-demo-i042416.cfapps.eu10.hana.ondemand.com"
],
"name": "connectivity-jerry-demo",
"space_name": "dev",
"space_id": "69abfd46-d228-4903-b245-de88ceff3642",
"uris": [
"connectivity-jerry-demo-i042416.cfapps.eu10.hana.ondemand.com"
],
"users": null,
"application_id": "fa893f26-69ee-4a4a-aa04-8f8ae0676475",
"version": "d964d7cc-e067-4810-b834-25c995fe1bc5",
"application_version": "d964d7cc-e067-4810-b834-25c995fe1bc5"
}
}

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

如何在Java代码中使用SAP云平台CloudFoundry环境的环境变量的更多相关文章

  1. 如何在SAP云平台的Cloud Foundry环境下添加新的Service(服务)

    我想在SAP云平台的Cloud Foundry环境下使用MongoDB的服务,但是我在Service Marketplace上找不到这个服务. cf marketplace返回的结果也没有. 解决方案 ...

  2. 如何在java代码中调用一个web项目jsp或者servlet

    有时候需要调用一个web项目的jsp或者servlet,但是执行内部的代码,并不是打开jsp,例如需要在一段java代码中清除一个web项目中的缓存,那么可以把清除缓存的代码放在该web项目的一个se ...

  3. 将Java应用部署到SAP云平台neo环境的两种方式

    方法1 - 使用Eclipse Eclipse里新建一个服务器: 服务器类型选择SAP Cloud Platform: 点Finish,成功创建了一个Server: Eclipse里选择要部署的项目, ...

  4. 如何上传HTML5应用到SAP云平台的Cloud Foundry环境下

    先使用WebIDE创建一个HTML5应用.New->Project from Template: 从可选模板里选择SAPUI5 Application: 创建一个HTML5 Module,取名为 ...

  5. Android如何在java代码中设置margin

    习惯了直接在xml里设置margin(距离上下左右都是10dip),如: <ImageView android:layout_margin="10dip" android:s ...

  6. 转--Android如何在java代码中设置margin

    ========  3 在Java代码里设置button的margin(外边距)? 1.获取按钮的LayoutParams LinearLayout.LayoutParams layoutParams ...

  7. SAP云平台CloudFoundry中的用户自定义变量

    CloudFoundry应用的manifest.xml里的env区域,允许用户自定义变量,如下图5个变量所示. 使用cf push部署到CloudFoundry之后,在SAP Cloud Platfo ...

  8. 如何将SAP Multi Target应用部署到SAP云平台的Cloud Foundry环境去

    SHINA是SAP HANA Interactive Education的缩写,是一个demo应用,用于演示如何开发SAP HANA原生应用. 这个应用包含了sample数据以及HANA数据库表,vi ...

  9. SAP云平台CloudFoundry环境里route 超过quota的错误处理

    试图往SAP Cloud Platform CloudFoundry用命令行CLI部署应用时,遇到如下错误: 原因是因为这个新建的名为Haytham的subaccount没有分配application ...

随机推荐

  1. Spring 属性配置

    此文已由作者尧飘海授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 随着Spring的不断发展与完善,早期它的功能可能只看做是IOC(反转控制)的容器,或者其最大的亮点为DI( ...

  2. nessus安装及使用

    1.安装注册 (1)从https://www.tenable.com/products/nessus/select-your-operating-system上下载对应操作系统版本的nessus,结果 ...

  3. Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2)D(思维,DP,字符串)

    #include<bits/stdc++.h>using namespace std;char c[2007][2007];char ans[4007];int s[2007][2007] ...

  4. python之01电脑和操作系统简史

    电脑简史 早期计算方式发展 :手指和石头 ->结绳 ->算筹->计算尺 -> 算盘 19岁时(1642),帕斯卡发明了人类有史以来第一台机械计算机——帕斯卡加法器.它是一种系列 ...

  5. bzoj 3722: PA2014 Final Budowa

    3722: PA2014 Final Budowa Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 303  Solved: 108[Submit][St ...

  6. vs.net远程调试

    有些时候,不能在本机器启动程序进行调试,例如调试全屏模式,或者调试那些需要在特定运行环境的程序,这时候就只能进行远程调试了. 一般的调试器都支持远程调试,vs也不例外.只需要在远程机器上启动一个应用程 ...

  7. cmd与bat脚本的使用

    零. bat cmd 命令大全 bat命令大全学习 一..定位到当前路径 1.定位到当前路径 2.方法二 3.win10下面 通解: %windir%\system32\cmd.exe 二 .使用命令 ...

  8. day23作业详解

    1.题目 2.题目详解 点击查看详细内容 1. 1-1 封装 把功能封装到类中 class Message(object): def email(self):pass def msg(self):pa ...

  9. python绘制世界人口地图

    最近看了<python编程:从入门到实践>,里边设计的项目拿来学习学习,绘制世界人口地图. 首先,下载数据,http://data.okfn.org/ ,从这里下载population_d ...

  10. angular学习笔记【ng2-charts】插件添加

    原文:https://segmentfault.com/a/1190000008077830 1. 安装 ng2-charts npm install ng2-charts --save2. 还必须引 ...