我配置了我的休息服务,通过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
有什么想法吗?
答案 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}