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

Dynamic custom mediator parametres in wso2 ESB

我使用文章 http://wso2.com/library/2898/ and 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>

它运行良好,但我没有解决一个问题,如何动态更改 header and/or 主题调解器参数的值?

当我试图用 get-property('method') 而不是 SomeHeader 之类的东西时。像string一样传递到mediator代码里,ebs没有计算出来

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

当前实现不支持表达式作为 class 中介属性。详情请参考Jira

您不能将任何动态值传递给自定义调解器,但您可以读取自定义调解器中的任何 属性。

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

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