Пользовательский посредник Apache Synapse

У меня есть служба REST, которую я хочу использовать через wso2 ESB. Служба возвращает объект JSON. Однако я хочу изменить JSON до того, как он войдет в ESB и будет обработан.

Мне удалось развернуть пользовательский посредник класса, но я не знаю, как мне обработать с ним тело сообщения (объект JSON). Это правильный способ сделать это?

На данный момент конфигурация моего сервиса выглядит так:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="ListRm" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
   <target>
      <outSequence>
         <class name="org.mediator.MyMediator" />
         <send />
         <drop />
      </outSequence>
      <endpoint>
         <address uri="http://xx.xx.xxx.xx:8080/alfresco/s/slingshot/datalists/lists/site/rm/documentLibrary" />
      </endpoint>
   </target>
</proxy>

Также есть ли другой способ изменить тело сообщения до того, как оно войдет в ESB?


person Ivo    schedule 20.07.2012    source источник


Ответы (1)


на уровне механизма посредничества синапса вы не можете получить доступ к сообщению json. На уровне построителя JSON он преобразует сообщение json в сообщение xml. Поэтому вам нужно получить доступ к элементу xml и внести там свои изменения.

messageContext.getEnvelope().getBody().getFirstElement();

вы можете получить элемент xml, как указано выше.

person Amila Suriarachchi    schedule 22.07.2012
comment
Да, JSON, который я использую, не может быть преобразован компоновщиком в XML, поэтому я хочу изменить его перед компоновщиком. Объект JSON имеет массив в корне, и поэтому его нельзя преобразовать в xml, я хочу добавить искусственный корень вверху, чтобы его можно было проанализировать. То есть этот подход не может работать в этом случае? - person Ivo; 23.07.2012