Utilizzo di Apache Camel come faccio Unmarshal il mio oggetto deserializzato che entra attraverso un CXF endpoint?
-
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>
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