Ibm cloud 无法读取Bluemix中的VCAP_服务
我使用以下代码读取Liberty应用程序的Ibm cloud 无法读取Bluemix中的VCAP_服务,ibm-cloud,websphere-liberty,Ibm Cloud,Websphere Liberty,我使用以下代码读取Liberty应用程序的VCAP\u SERVICES环境变量。 我没有得到任何值,结果显示为null或“未找到” private void readecasenvvars(){ Map env=System.getenv(); 对象vcap=env.get(“vcap_服务”); 如果(vcap==null){ System.out.println(“未找到VCAP_服务”); } 否则{ 试一试{ JSONObject obj=新的JSONObject(vcap);
VCAP\u SERVICES
环境变量。
我没有得到任何值,结果显示为null或“未找到”
private void readecasenvvars(){
Map env=System.getenv();
对象vcap=env.get(“vcap_服务”);
如果(vcap==null){
System.out.println(“未找到VCAP_服务”);
}
否则{
试一试{
JSONObject obj=新的JSONObject(vcap);
字符串[]名称=JSONObject.getNames(obj);
如果(名称!=null){
for(字符串名称:名称){
if(name.startsWith(“数据缓存”)){
JSONArray val=obj.getJSONArray(名称);
JSONObject serviceAttr=val.getJSONObject(0);
JSONObject credentials=serviceAttr.getJSONObject(“凭证”);
字符串username=credentials.getString(“用户名”);
String password=credentials.getString(“密码”);
String endpoint=credentials.getString(“catalogEndPoint”);
String gridName=credentials.getString(“gridName”);
System.out.println(“找到配置的用户名:“+username”);
System.out.println(“找到配置的密码:+密码”);
System.out.println(“找到配置的端点:“+endpoint”);
System.out.println(“找到配置的gridname:+gridname”);
打破
}
}
}
}捕获(例外e){
e、 printStackTrace();
}
}
}
您的解析代码正常
System.out.println(“VCAP_服务:”+System.getenv(“VCAP_服务”)代码>
cf文件myLibertyApplication/wlp/usr/servers/defaultServer/server.xml
您应该看到如下内容:
<xsBindings>
<xsGrid jndiName="wxs/myCache"
id="myCache"
gridName="${cloud.services.myCache.connection.gridName}"
userName="${cloud.services.myCache.connection.username}"
password="${cloud.services.myCache.connection.password}"
clientDomain="${cloud.services.myCache.name}"/>
</xsBindings>
其中,您的JNDI名称是wxs/myCache。这避免了解析VCAP_服务的需要。什么值为null或“未找到”?
<xsBindings>
<xsGrid jndiName="wxs/myCache"
id="myCache"
gridName="${cloud.services.myCache.connection.gridName}"
userName="${cloud.services.myCache.connection.username}"
password="${cloud.services.myCache.connection.password}"
clientDomain="${cloud.services.myCache.name}"/>
</xsBindings>