Usando Apache Camel ¿cómo unmarshal mi objetivo deserializado que entra a través de un punto final CXF?

StackOverflow https://stackoverflow.com/questions/2631662

  •  26-09-2019
  •  | 
  •  

Pregunta

Tengo una muy simple ruta de camellos. Comienza con un punto final CXF expuesto como un servicio web. entonces quiero convertirlo en XML y llamar a un método en un bean.

Actualmente estoy recibiendo un objeto específico CXF después de la llamada de servicio web. ¿Cómo tomo mi objeto serializado del CXF messageList y lo uso en el futuro?

Mi ruta:

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

El mensaje XML serializado:

<?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>

Yo esperaría que el XML sea más como esto:

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

Solución

lo encontré. Sólo tenía que usar esto.

<camel:convertBodyTo type="com.whatever.Person"/>

Otros consejos

También puede utilizar el formato de datos JAXB, que creo que es compatible con CXF fuera de la caja.

Asumo que tiene el uso wsdl2java CXF tener el modelo de objetos generados de auto? Si es así se puede ver en el código fuente generado que debe tener @ JAXB anotaciones

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top