我的应用程序在子目录src / main / resources目录中使用公共加密密钥,该子目录称为keys。为了在本地访问此文件,我只需要将路径设置为src/main/resources/keys/<mykey>.gpg
由于Cloudhub上的结构不同,因此无法设置上述路径,而我必须将其设置为${app.home}/keys/<mykey>.gpg
。
当我直接在Cloudhub中设置属性时,此方法有效,但是当我在属性文件中设置属性时,出现错误消息...
Could not resolve placeholder 'app.home' in string value
"${app.home}/classes/keys/<mykey>.gpg"
我在本地运行时也无法解析该属性。我的猜测是,首先解析application-$ {ENV} .properties中的属性,然后设置$ {app.home}属性,最后解析Cloudhub属性。
我的问题是,如何确保从属性文件中正确解析$ {app.home},或者有另一种方法可以不用使用它来实现相同的目的?理想情况下,我们不需要每次在Cloudhub中重新部署应用程序时都必须设置公钥位置。
谢谢!
编辑:
为了更清楚起见,这里是我在application-DEV-properties中设置属性的地方:cibc.public.key.location=${app.home}/classes/keys/<mykey>.gpg
答案 0 :(得分:3)
在某些情况下,我认为这是Mule 3中的问题。您可以尝试在属性占位符上设置ignore-unresolvable="true"
吗?它应该告诉Spring移至下一个要查找的地方。
<context:property-placeholder location="your.properties" ignore-unresolvable="true"/>
更新 还可以尝试将属性分为两个条目:
cibc.public.key.location=classes/keys/<mykey>.gpg
然后在您的Mule配置中:
identityFile="${app.home}/${cibc.public.key.location}"