2013-06-17 2 views
1

В середине потока Mule (внутри класса, который расширяет AbstractTransformer) Мне нужно напечатать (для целей ведения журнала) как можно больше от исходного сообщения (фактического XML, который был отправлен через SOAPUI в MULE)Как получить исходную полезную нагрузку из сообщения Мула?

Чтобы узнать, как получить сообщение, я пытаюсь получить сообщение из RequestContext.getEvent() , но я не смог его найти, Кто-нибудь знает, как это сделать?

сейчас я пытаюсь найти то, что мне нужно с помощью устаревшего метода:

RequestContext.getEvent().getMessage().getPayload() 

Но это не то, что мне нужно, и это:

RequestContext.getEvent().getMessage().getPayloadAsString() 

ничего не возвращает ,

ответ

0

Под «внутри трансформатора», вы имеете в виду внутри метода transformMessage()?

Если да, то вы можете войти содержание SoapUI с:

@Override 
public Object transformMessage(MuleMessage message, String outputEncoding) 
{ 
    log.info(message.getPayload()); 

    ...the rest of your code here 
} 
+0

Я внутри перекрытая версии метода doTransform. protected Object doTransform (Object src, String enc) throws TransformerException {..} – david

+0

'message.getPayload()' не возвращает строку и, следовательно, не может быть зарегистрирован и RequestContext.getEvent(). getMessage(). getPayloadAsString() тоже не работает. (он ничего не возвращает) – david

+0

Подкласс из AbstractMessage transformer и use transformMessage(), как в примере. – Tad

0

Если вам нужен доступ к MuleMessage в Transformer, расширить extended by org.mule.transformer.AbstractMessageTransformer вместо расширения org.mule.transformer.AbstractTransformer.

Это даст вам этот метод, чтобы переопределить:

public abstract Object transformMessage(MuleMessage message, 
            String outputEncoding) 
          throws TransformerException 
+0

есть ли что-нибудь еще, что я мог бы сделать для доступа к MuleMessage без изменения AbstractTransformer в AbstractMessageTransformer ?? – david

+0

Я думал о переопределении общедоступного процесса MuleEvent (событие MuleEvent) {...} – david

+0

Не связывайтесь с 'process (...)'. Базовый класс 'AbstractMessageTransformer' существует именно для вашего использования: используйте его. –

0

В методе OnCall мы имеем eventContext используя этот

eventContext.getMessage.getPayload мы можем получить полезную нагрузку.

0

eventContext.getEvent(). GetMessage(). GetPayload() или eventContext.getEvent(). GetMessage(). GetPayloadAsString()

Смежные вопросы