我正在尝试使用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 文件(凭证保险库)中读取属性?然后在我的流程中使用它?
谢谢, 可人
答案 0 :(得分:1)
如果您只想获取属性number
的值并将其添加到XML中,则可以使用 .properties 中的$ {number}。无需在Configuration XML中定义任何其他变量。
<set-payload value="<user><name>Royal Bank of Canada</name><id>Royal_Bank_Of_Canada</id><cc><company>>Visa</company><number>${number}</number><secret>123</secret></cc></user>" 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
中定义