Utilizzo di Apache Camel come faccio Unmarshal il mio oggetto deserializzato che entra attraverso un CXF endpoint?

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

  •  26-09-2019
  •  | 
  •  

Domanda

Ho un semplice percorso cammello. Si inizia con un CXF endpoint esposto come un servizio web. Allora voglio convertirlo in XML e chiamare un metodo su un fagiolo.

Al momento sto ottenendo un oggetto specifico CXF dopo la chiamata al servizio Web. Come faccio a prendere il mio oggetto serializzato dal CXF messageList e utilizzarlo per il futuro?

Il mio percorso:

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

L'XML serializzato Messaggio:

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

mi aspetterei che il XML per essere più simile a questo:

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

Soluzione

ho trovato. Ho dovuto usare questo.

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

Altri suggerimenti

È inoltre possibile utilizzare il formato dei dati JAXB, che credo CXF supporta out of the box.

I suppone che si abbia l'uso WSDL2Java CXF per avere il modello di oggetti generati automaticamente? Se così si può guardare il codice sorgente generato che dovrebbe avere @ JAXB annotazioni

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top