我使用文章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没有计算它。
我的问题是如何将自定义介体参数的值更改为属性值?
答案 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。