Динамические пользовательские параметры посредника в wso2 ESB

#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 для получения более подробной информации.