我跑了
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Content Layout -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/adView"
android:layout_below="@id/my_awesome_toolbar" />
<!-- Navigation Drawer -->
<android.support.design.widget.NavigationView
android:id="@+id/navigation"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:itemIconTint="#FF0000"
app:itemTextColor="#D2691E"
app:menu="@menu/navigation_menu" />
</android.support.v4.widget.DrawerLayout>
并注意到Bluemix没有在cf env <my app>
对象的返回JSON数据中返回instance_id
的值。我的应用程序在Bluemix上运行,有多个实例。大多数其他属性包括VCAP_APPLICATION
和application_id
。
根据documentation,听起来应该始终存在所有属性:
此变量包含已部署的关联属性 应用。结果以JSON格式返回。下表 列出返回的属性。
我遇到的问题是,如果缺少某些必需的属性,Spring Cloud将无效。我是否正确认为application_name
被省略是Bluemix中的错误?
我在向instance_id
添加虚拟值后确认Spring Cloud与Bluemix一起正常工作。
更新 - 添加确切错误
VCAP_APPLICATION
由于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)
类中的此方法扩展了Configuration
,因此出现此错误:
AbstractCloudConfig
答案 0 :(得分:1)
如果不了解其实例ID,大多数Spring Cloud都会好的。对于服务发现,为一个实例提供一个唯一的标识符可能是一个好主意,但如果你需要,你可以自己轻松地提供一个(例如${random.int}
可以工作),并且大多数事情即使你不做也会有效我想,拥有它。对于消息使用者来说更重要,因此您可能需要对Spring Cloud Stream进行更多自定义。
答案 1 :(得分:1)
Bluemix 在instance_id
环境变量中包含VCAP_APPLICATION
。
运行cf env <app_name>
命令行时不会显示它,但是当您从Java应用程序转储其值时,您可以看到它可用。
我将以下代码添加到我的Bluemix Java应用程序中:
String VCAP_APPLICATION = System.getenv("VCAP_APPLICATION");
System.out.println("VCAP_APPLICATION - " + VCAP_APPLICATION);
然后运行以下命令检查最近的日志:
$ cf logs <app-name> --recent
我可以在下面的输出中看到instance_id
:
2016-01-05T17:05:00.01-0500 [App / 0] OUT VCAP_APPLICATION - {&#34;限制&#34; {&#34; MEM&#34;:512,&#34;磁盘&#34;:1024,&#34; FDS&#34;:16384},&#34; APPLICATION_ID& #34;:&#34; 9958288f-9842-4ddc-93dd-1ea3c90634cd&#34;&#34; APPLICATION_VERSION&#34;:&#34; 05c3b877-035f-4936-A504-cda523eb8fdf&#34;&#34 ; APPLICATION_NAME&#34;:&#34; ADS-java的cloudant&#34;&#34; application_uris&#34;:[&#34; ads-java-cloudant.mybluemix.net&#34],&#34 ;版本&#34;:&#34; 05c3b877-035f-4936-A504-cda523eb8fdf&#34;&#34;名称&#34;:&#34; ADS-java的cloudant&#34;&#34; SPACE_NAME& #34;:&#34; repro_alexds&#34;&#34; space_id&#34;:&#34; 3075a3e5-2c29-4d8a-9e97-06aed18af1c6&#34;&#34;的URI&#34;:[& #34; ads-java-cloudant.mybluemix.net&#34],&#34;用户&#34;:空,的&#34; INSTANCE_ID&#34;:&#34; 427e4ba5851945508e6e96465e097af7&#34; 强>,&#34; instance_index&#34;:0,&#34;主机&#34;:&#34; 0.0.0.0&#34;&#34;端口&#34;:62347&#34; started_at&#34;:&#34; 2016年1月5日 22:02:02 + 0000&#34;,&#34; started_at_timestamp&#34;:1452031322,&#34; start&#34;:&#34; 2016-01-05 22:02:02 + 0000&#34;,&#34; state_timestamp&#34;:1452031322}
答案 2 :(得分:0)
您的应用程序运行了多少个实例? 无论如何Spring Spring会接受一个自我管理的id,所以你可以自己提供一个值。
无论如何,你可以通过描述这个平台可能错误的支持小部件来提高Bluemix支持的票证。