访问位于cloudhub上的src / main / resources中的自定义属性文件中的mule-app.properties

时间:2015-12-07 19:24:31

标签: mule mule-studio cloudhub

我有一个使用mule apikit构建的mule应用程序。 mule-app.properties文件包含以下属性:

orig.db.url=jdbc:db2://mmrs001.nmd.net:1004/dudu:user=abc43;password=xxxx;

自定义属性文件src / main / resources / dev.properties包含以下属性:

db.url=${orig.db.url}

并且,mule配置xml文件包含以下property-placeholder:

<context:property-placeholder location="dev.properties"/>

现在,当我在本地部署它时,一切正常,我能够运行流程。但是,在我在Cloudhub上部署的同时,它给出了以下异常:

Invalid bean definition with name 'get:/total_amount:total_amount-db-config' defined in null: Could not resolve placeholder 'orig.db.url' in string value "jdbc:db2://mmrs001.nmd.net:1004/dudu:user=abc43;password=xxxx;"

我无法理解我在这里缺少什么?

3 个答案:

答案 0 :(得分:2)

您是如何部署到CloudHub的?如果您使用Anypoint Studio中的部署工具,则可以选择在部署之前设置属性。 Image from Anypoint Studio

答案 1 :(得分:2)

mule-app.properties将添加到系统属性而不是类路径属性。我们无法从添加到classpath的属性文件中引用系统属性。我们需要将这些属性移动到类路径以在运行时解决这些问题。

通过使用以下方法导入mule-app.properties来覆盖此行为的一种方法:

<context:property-placeholder location="mule-app.properties,dev.properties”/>

它告诉spring按各自的顺序加载属性。因此,首先加载mule-app.properties然后加载dev.properties。

但是,将mule-app.properties文件包含在类路径中并不是最佳做法。最好的方法是从mule-app.properties中删除dev属性并将其放在dev.properties中。

答案 2 :(得分:0)

默认情况下,部署到cloudhub时,mule-app.properties中的所有属性都应显示在属性选项卡中。你第一次部署时没有看到它们吗?