我想在我的 REST API 中同时支持资源的 XML 和 JSON 表示。我别无选择,只能使用 Jax-RS 的 CXF 实现而不使用 Spring。我正在使用 JAXB 来编组和解组对象。我定义了以下方法,它们返回同一资源的不同表示。
@GET
@Produces({MediaType.APPLICATION_XML, MediaType.WILDCARD})
@ElementClass(response = MyList.class)
public Response listXML(){
MyList list = getList();
return Response.status(
Response.Status.FOUND).
entity(list).type(MediaType.APPLICATION_XML).build();
}
@GET
@Produces({MediaType.APPLICATION_JSON})
@ElementClass(response = MyList.class)
public Response listJson(){
MyList list = getList();
return Response.status(
Response.Status.FOUND).
entity(list).type(MediaType.APPLICATION_JSON).build();
}
这适用于 XML 表示。但是,如果我将 HTTP 请求的 Accept 标头设置为 application/json,我会收到以下消息。
No message body writer has been found for response class MyList.
我在这里想念什么?MyList 类由 XSD 的 JAXB 生成,并具有所有必要的注释看起来我需要配置 CXF 以使用 JSON 提供程序。我还没有找到关于在 web.xml 中为不使用 Spring 的 web 应用程序配置 JSON 提供程序的好的文档。如果有人有这个工作,请指导我。