【问题标题】:Enhancing wadl in apache CXF with fasterxml.jackson serializer使用 fastxml.jackson 序列化程序增强 apache CXF 中的 wadl
【发布时间】:2013-10-25 19:04:13
【问题描述】:

我有一个使用fastxml jackson进行序列化的rest应用程序。

我想增强 wadl 以在表示标签内显示模型字段,例如

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

而不是普通的描述:

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

我以为我只需要为 WadlGeneration 添加一个 bean...

<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 进行这项工作的任何想法?

【问题讨论】:

  • 你有没有推荐过 JAXRS:默认情况下提供者到 jackson 提供者 cxf 提供了 jettison
  • 可以,使用jackson作为provider,如上xml sn -p所示。除非我错过了什么。我正在使用 maven,并且最初没有将 jettison 引用为依赖项。虽然,我确实注意到 wadlGenerator 的一些属性实际上确实需要抛弃依赖项。

标签: java serialization cxf wadl


【解决方案1】:

似乎解决方案是在我的每个模型中包含@xmlrootelement。然后我使用了文档生成器:http://enunciate.codehaus.org/index.html

只要我的模型定义了元素,它就会按预期反序列化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 2021-02-06
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多