Utilisation d'Apache Camel comment puis-je unmarshal mon objet désérialisé qui vient à travers un CXF Endpoint?

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

  •  26-09-2019
  •  | 
  •  

Question

J'ai une route de chameau très simple. Il commence par un point final CXF exposé en tant que service Web. Je veux ensuite convertir en XML et appeler une méthode sur un haricot.

Actuellement, je reçois un objet spécifique CXF après l'appel de service Web. Comment puis-je prendre mon objet sérialisé de la CXF MessageList et l'utiliser à l'avenir?

Mon itinéraire:

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

Le XML sérialisé Message:

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

Je me attends XML à être plus comme ceci:

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

La solution

Je l'ai trouvé. Je devais l'utiliser.

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

Autres conseils

Vous pouvez également utiliser le format de données JAXB, que je pense que CXF soutient hors de la boîte.

Je suppose que vous avez utilisé CXF wsdl2java pour avoir le modèle des objets générés automatiquement? Si oui, vous pouvez consulter le code source généré qui devrait avoir @ JAXB annotations

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top