Как предотвратить преобразование CXF% gt;в> в полезной нагрузке? - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть адаптер верблюда с точкой входа CXF для входа (из), который настроен следующим образом:

  <camel-cxf:properties>
    <entry key="dataFormat" value="PAYLOAD"/>
    <entry key="allowStreaming" value="true"/>
    <entry key="relayHeaders" value="false"/>
  </camel-cxf:properties>

Вход SOAP содержит следующий элемент в полезной нагрузке:

<foo>here is an arrow -&gt;</foo>

Однако вывод выглядит так:

<foo>here is an arrow -></foo>

Я знаю, что это не недействительно.XML не требует выхода>.Настоятельно рекомендуется «только» (подробности см. в этом вопросе ).

Но я не хочу, чтобы полезная нагрузка изменялась.CXF должен только обрезать конверт SOAP и хранить все как есть.Можно ли отключить синтаксический анализ / повторную сериализацию полезной нагрузки XML?

Ответы [ 3 ]

0 голосов
/ 25 февраля 2019

Вы можете изменить dataFormat на MESSAEG, таким образом, camel-cxf не будет касаться полезной нагрузки XML или вложений.Кстати, вы не можете получить доступ к заголовку SOAP с этим форматом данных.

0 голосов
/ 04 марта 2019

Мой коллега узнал, что проблема заключается в том, как другие компоненты работают с выходным объектом CXF CachedCxfPayload .Процессор, который идет после CXF, кажется, выполняет нежелательное преобразование.

Наше решение состоит в том, чтобы преобразовать вывод CXF в строку перед передачей:

<convertBodyTo type="java.lang.String"/> 

Теперь преобразование больше не выполняется.

0 голосов
/ 24 февраля 2019

Посмотрите на добавление перехватчика (как последний шаг получения), или вы можете передать его в процессор на верблюжьем маршруте после шага cxf и изменить тело.

CXF Interceptor

...