Usando o Apache Camel, como faço para soltar meu objeto desaperializado que entra através de um terminal CXF?

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

  •  26-09-2019
  •  | 
  •  

Pergunta

Eu tenho uma rota de camelo muito simples. Começa com um ponto de extremidade CXF exposto como um serviço da Web. Eu então quero convertê -lo para XML e chamar um método em um feijão.

Atualmente, estou recebendo um objeto específico da CXF após a chamada do serviço da web. Como faço para tirar meu objeto serializado do CXF Messagelist e usá -lo daqui para frente?

Minha rota:

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

A mensagem serializada 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>

Eu esperaria que o XML fosse mais assim:

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

Solução

Eu encontrei. Eu só tinha que usar isso.

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

Outras dicas

Você também pode usar o formato de dados JAXB, que eu acho que o CXF suporta fora da caixa.

Suponho que você tenha usado o CXF WSDL2Java para gerar os objetos modelo gerados automaticamente? Nesse caso, você pode olhar para o código -fonte gerado que deve ter @ JAXB Anotações

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top