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