#wso2 #esb #mediator
#wso2 #esb #посредник
Вопрос:
Я создал пользовательский посредник, используя статьи 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 его не вычислял.
Мой вопрос в том, как изменить значение моего пользовательского параметра посредников на значение свойства?
Ответ №1:
Например, вы можете использовать фигурные скобки {}, чтобы указать, что ваша строка является запросом XPath. В вашем посреднике, если вы найдете {} в первой и последней позиции, используйте org.apache.synapse.util.xpath .SynapseXPath : создайте новый SynapseXPath с вашим xpath (строка между {}) и используйте stringValueOf(theMessageContext)
Ответ №2:
Вы не можете передать какое-либо динамическое значение пользовательскому посреднику, но вы можете прочитать любое свойство в пользовательских посредниках.
public boolean mediate(MessageContext mc) {
String value = (String) mc.getProperty("SomeHeader");
}
Ответ №3:
Текущая реализация не поддерживает выражения в качестве свойств посредника класса. Пожалуйста, обратитесь к Jira для получения более подробной информации.