【发布时间】:2017-01-12 20:59:38
【问题描述】:
我的CXF 提供的REST 服务通常返回javax.ws.rs.core.Response 出于通常的原因,将结果实体数据封送为XML 和返回码:
@GET
@Path("/getPojo")
@Produces("application/xml")
public Response getPojo() {
SomePojo resultObj = ...;
Response result = Response.status(200).entity(resultObj).build();
return result;
}
要求SomePojo 包含正确的注释:
@XmlRootElement(name = "somePojo")
@XmlAccessorType(XmlAccessType.FIELD)
public class SomePojo implements Serializable {
...
}
但是,现在我面临一个注释约定对我不起作用的情况,我必须构建自己的JAXBElement。如何在 Response 中包含自定义编组的 JAXBElement,而不是使用依赖注解配置的 Response.ResponseBuilder.entity(resultObj)?我正在编组类似于here 解释的内容,但他只是将编组的 XML 打印到控制台中,我想将其打印到响应中(而不仅仅是 HttpResponse 输出)。
【问题讨论】:
-
您是要自己编组并直接返回 XML,还是要配置 CXF 以应用自定义编组器您的结果对象?
-
我不是 100% 确定我理解这个问题,但我的直觉是选择前者,我自己编组但我仍然想使用
Response因为我想同时封装一个回报代码+对象