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)
我使用文章 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)