Используя Apache Camel, как мне демаршалировать мой десериализованный объект, поступающий через конечную точку CXF?

У меня очень простой верблюжий маршрут. Он начинается с конечной точки CXF, представленной как веб-служба. Затем я хочу преобразовать его в xml и вызвать метод для компонента.

В настоящее время я получаю конкретный объект CXF после вызова веб-службы. Как вывести сериализованный объект из CXF MessageList и использовать его в будущем?

Мой маршрут:

<camel:route>
   <camel:from uri="cxf:bean:helloEndpoint" />
   <camel:marshal ref="xstream-utf8" />
   <camel:to uri="bean:hello?method=hello"/>
</camel:route>

XML-сериализованное сообщение:

<?xml version='1.0' encoding='UTF-8'?>
<org.apache.cxf.message.MessageContentsList serialization="custom">
   <unserializable-parents />
   <list>
      <default>
         <size>1</size>
      </default>
      <int>6</int>
      <com.whatever.Person>
         <firstName>Joe</firstName>
         <middleName></middleName>
         <lastName>Buddah</lastName>
         <dateOfBirth>2010-04-13 12:09:00.137 CDT</dateOfBirth>
      </com.whatever.Person>
   </list>
</org.apache.cxf.message.MessageContentsList>

Я ожидаю, что XML будет больше похож на этот:

<com.whatever.Person>
   <firstName>Joe</firstName>
   <middleName></middleName>
   <lastName>Buddah</lastName>
   <dateOfBirth>2010-04-13 12:09:00.137 CDT</dateOfBirth>
</com.whatever.Person>

person ScArcher2    schedule 13.04.2010    source источник


Ответы (2)


Я нашел это. Я просто должен был использовать это.

<camel:convertBodyTo type="com.whatever.Person"/>
person ScArcher2    schedule 13.04.2010

Вы также можете использовать формат данных JAXB, который, я думаю, CXF поддерживает из коробки.

Я предполагаю, что вы использовали CXF wsdl2java для автоматической генерации объектов модели? Если это так, вы можете посмотреть сгенерированный исходный код, который должен иметь аннотации @ JAXB.

person Claus Ibsen    schedule 14.04.2010
comment
На самом деле я открываю веб-службу, а не потребляю ее. Я также не использую wsdl2java, но спасибо за информацию. Я уверен, что это пригодится в будущем! - person ScArcher2; 14.04.2010