在WSO2 ESB的脚本调解器的javascript代码中,有一种方法可以在此属性的范围与"默认"不同时获取属性的值。 ?
如果属性具有默认范围:
get-property('MyProperty')
OR
<script language="js">
mc.getProperty("MyProperty");
</script>
如果是属于&#39;运输&#39;范围:
get-property('transport','FILE_NAME')
OR
<script language="js">
mc.????????
</script>
答案 0 :(得分:3)
您似乎无法使用
获取除突触之外的其他范围的属性mc.get-property(&#34; Property Name&#34;)
因为mc是Synapse.MessageContext的实例,为了获得其他消息上下文属性,我在java中做了类似的事情,我不知道它是否适用于javascript。我为axis2消息上下文属性执行此操作。 这里&#34; context&#34;是Synapse.MessageContext的实例。
org.apache.axis2.context.MessageContext axis2MessageContext;
axis2MessageContext = ((Axis2MessageContext)context).getAxis2MessageContext();
答案 1 :(得分:3)
您可以使用以下代码获取财产:
<property name="ComingRoles" expression="your property or value" scope="default" />
<script language="js">var rolelist = mc.getProperty('ComingRoles');</script>
我用WSO2ESB 4.9.0测试它
<强>更新强>:
如果您的属性未在默认范围内定义,则首先必须在默认范围内定义它。
例如:
<property name="authheader" expression="get-property('transport','X-JWT-Assertion')"></property>
<script language="js"> var temp_auth = mc.getProperty('authheader')
</script>
它适用于ESB 4.5.0及更高版本
答案 2 :(得分:0)
我不认为mc
有get-property
方法
脚本调解器使用Apache Bean Scripting Framework
来支持脚本语言。 mc
变量代表MessageContext
的实现,名为ScriptMessageContext.java
。
[这是ScriptMessageContext
] [1]
[1]:https://synapse.apache.org/apidocs/org/apache/synapse/mediators/bsf/ScriptMessageContext.html
您可以在那里检查任何DEFAULT范围属性(方法)。
如果没有,您可能需要将这些范围属性放在自定义属性中。
像:
<property name="CustomAction" expression="get-property('Action')"/>
然后在JS中使用getProperty(&#34; CustomAction&#34;)来获取它们。
答案 3 :(得分:0)
我做了类似下面的事情
<property expression="json-eval($.)" name="JSONPayload"
scope="default" type="STRING"/>
<script language="js"><![CDATA[var pl_string = mc.getProperty("JSONPayload");
var newPayload="{\"event\": " + pl_string + "}";
mc.setPayloadJSON(newPayload);]]></script>