wso2 ESB中的动态自定义中介参数

时间:2016-10-02 17:57:40

标签: wso2 esb mediator

我使用文章http://wso2.com/library/2898/http://wso2.com/library/2936/构建了自定义中介。

看起来像这样:

<inSequence>
  <property expression="local-name($body/*[1])" name="method" scope="default" type="STRING"/>
  <MyMediator>
     <header>SomeHeader<header/>
     <topic>SomeTopic</topic>
  </MyMediator>
</inSequence>

它运作良好,但我没有解决的一个问题,我如何动态更改标题和/或主题调解器参数的值?

当我尝试添加get-property('method')而不是SomeHeader之类的内容时。它被传递到像字符串这样的中介代码中,ebs没有计算它。

我的问题是如何将自定义介体参数的值更改为属性值?

3 个答案:

答案 0 :(得分:1)

您无法将任何动态值传递给自定义介体,但您可以读取自定义介体中的任何属性。

public boolean mediate(MessageContext mc) {
   String value = (String) mc.getProperty("SomeHeader");
}

答案 1 :(得分:1)

您可以选择使用{}大括号来表示您的字符串是XPath请求。在您的调解器中,如果您在第一个和最后一个位置找到{},请使用org.apache.synapse.util.xpath.SynapseXPath:使用您的xpath({}之间的字符串)创建一个新的SynapseXPath并使用stringValueOf(theMessageContext)

答案 2 :(得分:0)

当前的实现并不支持表达式作为类中介属性。有关详细信息,请参阅Jira