【问题标题】:Apache cxf jax-rs implementation with xml databind带有 xml 数据绑定的 Apache cxf jax-rs 实现
【发布时间】:2015-10-25 16:44:30
【问题描述】:

我将我的休息服务配置为通过 Variant 实现内容协商。 在球衣上一切正常,但在 apache cxf 上出现问题。

没有为 ContentType 类找到消息正文编写器:application/xml

似乎当我将响应构造为 xml 类型时,它找不到正确的正文编写器。

我用 jacksonJaxbJsonProvider 配置了 jax-rs,并且在 json 数据绑定中一切都很好。

<jaxrs:providers>
  <bean class="com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider" />
</jaxrs:providers>

cxf-rt-frontend-jaxrs 版本 3.0.3 杰克逊数据绑定:2.4.2

有什么想法吗?

【问题讨论】:

  • 让我们看看你的 jaxb 类
  • @XmlType(propOrder = { "orderId"}) public class OrderForConfirmationEmail 实现 Serializable { @XmlElement public long getOrderId() { return orderId; }

标签: jax-rs cxf


【解决方案1】:

添加一个@XmlRootElement(name="order")生成的xml不能是&lt;orderId&gt;data&lt;orderId&gt;,它应该有根元素。因此更新后的代码看起来像

@XmlRootElement(name="order")
@XmlType(propOrder = { "orderId"})
public class OrderForConfirmationEmail implements Serializable {


    @XmlElement
    public long getOrderId() {
        long orderId = new Random().nextLong();
        return orderId;
    }

}

生成的xml是

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><order xmlns="http://com.kp.swasthik/so/schema">
   <orderId>369317779145370211</orderId>
</order>

而json是

{"orderId":6812414735706519327}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 2023-03-20
    • 2013-12-18
    相关资源
    最近更新 更多