使用xml databind的Apache cxf jax-rs实现

时间:2015-08-03 14:15:00

标签: jax-rs cxf

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

未找到类ContentType的消息正文编写器:application / xml

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

我使用jacksonJaxbJsonProvider配置了jax-rs,所有这些都适用于json databind。

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

cxf-rt-frontend-jaxrs 3.0.3版 jackson-databind:2.4.2

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

添加@XmlRootElement(name="order")生成的xml不能是<orderId>data<orderId>,它应该有root元素。因此更新的代码看起来像

@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}