Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Bluemix在VCAP_应用程序中不包含实例_id_Spring_Ibm Cloud_Cloud Foundry_Spring Cloud - Fatal编程技术网

Spring Bluemix在VCAP_应用程序中不包含实例_id

Spring Bluemix在VCAP_应用程序中不包含实例_id,spring,ibm-cloud,cloud-foundry,spring-cloud,Spring,Ibm Cloud,Cloud Foundry,Spring Cloud,我跑 此错误是由于扩展AbstractCloudConfig的配置类中的此方法而发生的: Caused by: java.lang.NullPointerException at java.util.Hashtable.put(Hashtable.java:459) at org.springframework.cloud.Cloud.getAppProperties(Cloud.java:252) at org.springframework.cloud.Cloud.g

我跑

此错误是由于扩展
AbstractCloudConfig
配置
类中的此方法而发生的:

Caused by: java.lang.NullPointerException
    at java.util.Hashtable.put(Hashtable.java:459)
    at org.springframework.cloud.Cloud.getAppProperties(Cloud.java:252)
    at org.springframework.cloud.Cloud.getCloudProperties(Cloud.java:236)
    at org.springframework.cloud.config.java.AbstractCloudConfig.properties(AbstractCloudConfig.java:67)

如果Spring Cloud不知道它的实例id,那么大多数情况下都可以。对于服务发现来说,为实例提供一个唯一的标识符可能是个好主意,但是如果需要,您可以自己提供一个标识符(例如,
${random.int}
),我认为即使您没有它,大多数情况下都可以工作。对于消息消费者来说,这更为重要,因此您可能需要对SpringCloudStream进行更多定制。

您的应用程序运行了多少实例? 无论如何,SpringCloud会接受一个自我管理的id,所以您可以自己提供一个值


无论如何,您可以通过描述此平台可能存在的错误的支持小部件向Bluemix支持部门发出通知。

Bluemix是否在
VCAP\u应用程序
环境变量中包含
instance\u id

当您运行
cf env
命令行时,它不会显示,但是当您从Java应用程序转储它的值时,您可以看到它是可用的

我在Bluemix Java应用程序中添加了以下代码:

@Bean
public Properties cloudProperties(){
    return properties();
}
然后运行以下命令检查最近的日志:

String VCAP_APPLICATION = System.getenv("VCAP_APPLICATION");
System.out.println("VCAP_APPLICATION - " + VCAP_APPLICATION);
$cf日志--最近的
我可以在下面的输出中看到
instance\u id

2016-01-05T17:05:00.01-0500[App/0]输出VCAP\U应用程序- {“限制”:{“内存”:512,“磁盘”:1024,“fds”:16384},“应用程序id”:“9958288f-9842-4ddc-93dd-1ea3c90634cd”,“应用程序版本”:“05c3b877-035f-4936-a504-cda523eb8fdf”,“应用程序名称”:“ads java cloudant”,“应用程序URI”:[“ads java cloudant.mybluemix.net”],“版本”:“05c3b877-035f-4936-a504-CDA523EB8F”,“名称”:“ads cloudant”,“应用程序名称”,“应用程序空间”:”“repro_-alexds”、“space_-id”:“3075a3e5-2c29-4d8a-9e97-06aed18af1c6”、“URI”:[“ads java cloudant.mybluemix.net”],“用户”:null,“实例id”:“427E4BA5851945508E6E6465E097AF7”,“实例索引”:0,“主机”:“0.0.0.0.0”,“端口”:62347,“开始于”:“2016-01-05” 22:02:02+0000,“在时间戳开始”:1452031322,“开始”:“2016-01-05 22:02:02+0000,“状态时间戳”:1452031322}


您的具体问题是什么(“将不起作用”非常模糊,我相信您会同意)?@DaveSyer它是
Cloud
类中的空指针。我将添加确切的错误请参见Cloud.java:
appProperties.put(appPropLeadKey+“实例id”,getApplicationInstanceInfo().getInstanceId())
。这将抛出一个空点运行2个实例。您打算如何自己提供一个值?Spring Cloud直接读取
VCAP_应用程序
env.parameter,因此可能需要在Spring自动连线发生之前修改我的应用程序中的参数,这听起来不是一个好的解决方案如果你还有别的想法。
String VCAP_APPLICATION = System.getenv("VCAP_APPLICATION");
System.out.println("VCAP_APPLICATION - " + VCAP_APPLICATION);
$ cf logs <app-name> --recent