使用脚本介体在JavaScript中获取属性值

时间:2014-04-03 11:23:29

标签: javascript wso2 wso2esb synapse

在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>

4 个答案:

答案 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)

我不认为mcget-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>