具有 xml 数据绑定的 Apache cxf jax-rs 实现

Apache cxf jax-rs implementation with xml databind

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

未找到 class 的邮件正文作者 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 杰克逊数据绑定:2.4.2

有什么想法吗?

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

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