如何从Mule中的.properties文件中读取属性

时间:2015-01-05 08:57:12

标签: mule

我正在尝试使用Mule Credentials Vault安全功能。 我创建了 .properties 文件,安全属性占位符,并定义了密钥和加密算法。 现在我想在返回HTTP响应时使用文件中的一些属性。

我的文件 src / main / resources / data.properties 包含例如:

在我的画布中,在Configuration XML下我添加了:

<secure-property-placeholder:config name="Secure_Property_Placeholder" key="24681357" location="data.properties" doc:name="Secure Property Placeholder" encryptionAlgorithm="DES"/>

<set-variable variableName="card.number" value="${number}" />

在我的画布中,我有消息流来构建xml'基于用户创建XML响应'。设置中的值为:

这不起作用。我得到的错误是:

-> org.mule.module.launcher.DeploymentInitException: IllegalArgumentException: Could not resolve placeholder 'key' in string value "${key}"

-> Caused by: org.mule.api.lifecycle.InitialisationException: Invalid bean definition with name 'org.mule.autogen.bean.13' defined in null: Could not resolve placeholder 'key' in string value "${key}"; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'key' in string value "${key}"

-> Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'key' in string value "${key}"

有谁知道如何从 .properties 文件(凭证保险库)中读取属性?然后在我的流程中使用它?

谢谢, 可人

4 个答案:

答案 0 :(得分:1)

如果您只想获取属性number的值并将其添加到XML中,则可以使用 .properties 中的$ {number}。无需在Configuration XML中定义任何其他变量。

<set-payload value="&lt;user&gt;&lt;name&gt;Royal Bank of Canada&lt;/name&gt;&lt;id&gt;Royal_Bank_Of_Canada&lt;/id&gt;&lt;cc&gt;&lt;company&gt;&gt;Visa&lt;/company&gt;&lt;number&gt;${number}&lt;/number&gt;&lt;secret&gt;123&lt;/secret&gt;&lt;/cc&gt;&lt;/user&gt;" doc:name="Set Payload"/>

但请注意,属性占位符在启动时已解析,因此您将无法根据某些用户输入动态检索属性。为此,您将不得不进行一些Java编码。 This SO post为您提供了一些如何实现这一目标的提示。基于这些答案,我创建了一个simple example关于如何使用一个非常简单的帮助bean来实现这一点。

答案 1 :(得分:0)

我怕你不能。 Mule Credentials Vault 是一项企业功能,因此除非您是MuleSoft客户,否则您将无法访问源代码。

即使您是客户,您使用的API也会受到支持。我建议手动创建一个自定义java组件,用于显示代码和Jasypt(不是作为属性占位符而是作为库)。

另一个选择,如果您是客户(我猜您是在使用凭证保险库),请联系官方支持,以便他们为您处理。

答案 2 :(得分:0)

属性占位符在启动时使用resolve,因此您将无法根据某些用户输入动态检索属性。

使用MEL中的.properties中的$ {propertyName}来访问特定属性

答案 3 :(得分:0)

从Dataweave中,您可以阅读下面给出的内容 P(&#39; VARIABLENAME&#39;) 其中variablename在属性文件ex:variablename = 15

中定义