Расширение wadl в apache CXF с помощью сериализатора fastxml.jackson

У меня есть приложение для отдыха, использующее fastxml Джексон для сериализации.

Я хотел улучшить wadl для отображения полей модели внутри тега представления, таких как

<representation mediaType="application/json">
  <doc>...</doc>
  <param name="myField" type="xs:string"/>
   ...
</representation>

вместо ванильного описания:

<representation mediaType="application/json">
  <doc>...</doc>
</representation>

Я думал, что добавление bean-компонента для WadlGeneration - все, что мне нужно было сделать...

<bean id="jacksonProvider" class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider">
    <constructor-arg><ref bean="customObjectMapper"/></constructor-arg>
</bean>

<bean id="wadlGenerator" class="org.apache.cxf.jaxrs.model.wadl.WadlGenerator">
    <property name="linkJsonToXmlSchema" value="true" />
    <property name="supportCollections" value="true"/>
    <property name="ignoreMessageWriters" value="false"/>
    <property name="useJaxbContextForQnames" value="false"/>
</bean>

<jaxrs:server id="restContainer" address="/">
     <jaxrs:serviceBeans>
       ...
     </jaxrs:serviceBeans>
     <jaxrs:extensionMappings>
        <entry key="xml" value="application/xml"/>
        <entry key="json" value="application/json"/>
     </jaxrs:extensionMappings>
     <jaxrs:providers>
        <ref bean="jacksonProvider" />
        <ref bean="wadlGenerator" />
     </jaxrs:providers>

</jaxrs:server>

.. но, видимо, это еще не все. Я видел примеры в jaxb и codehaus jackson, но есть какие-нибудь идеи о том, как заставить это работать с fastxml jackson?

1 ответ

Решение

Похоже, решением было включить @xmlrootelement в каждую из моих моделей. Затем я использовал генератор документов: http://enunciate.codehaus.org/index.html

Пока мои модели имеют определенный элемент, он десериализуется, как и ожидалось.

Другие вопросы по тегам