Использование верблюда Apache Как я могу МООНЧАЛ моим десериализованным объектом, который входит через конечную точку CXF?
-
26-09-2019 - |
Вопрос
У меня очень простой маршрут верблюда. Начинается с конечной точки CXF, выставленной в виде веб-сервиса. Затем я хочу преобразовать его в XML и вызовите метод на компонентах.
В настоящее время я получаю определенный объект CXF после вызова веб-сервиса. Как мне принять свой сериализованный объект из CXF MessageList и использовать его вперед?
Мой маршрут:
<camel:route>
<camel:from uri="cxf:bean:helloEndpoint" />
<camel:marshal ref="xstream-utf8" />
<camel:to uri="bean:hello?method=hello"/>
</camel:route>
Сериализованное сообщение 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>
Я ожидал, что XML будет больше всего:
<com.whatever.Person>
<firstName>Joe</firstName>
<middleName></middleName>
<lastName>Buddah</lastName>
<dateOfBirth>2010-04-13 12:09:00.137 CDT</dateOfBirth>
</com.whatever.Person>
Решение
Я нашел это. Я просто должен был использовать это.
<camel:convertBodyTo type="com.whatever.Person"/>
Другие советы
Вы также можете использовать формат данных JAXB, который, я думаю, CXF поддерживает из коробки.
Я предполагаю, что вы используете CXF WSDL2JAVA, чтобы автоматически создавать модельные объекты? Если это так, вы можете посмотреть сгенерированный исходный код, который должен иметь @ JAXB Annotations