我的split/2
提供的CXF
服务通常会返回REST
,通常会将结果实体数据封装为XML并返回代码:
javax.ws.rs.core.Response
要求@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
中包含自定义封送的JAXBElement,而不是使用依赖于注释配置的Response
?我正在编组类似于解释here的内容,但他只是将封送的XML打印到控制台中,我想将其打印到响应中(而不仅仅是Response.ResponseBuilder.entity(resultObj)
)。
答案 0 :(得分:1)
您可以使用自定义编组程序对xml进行编组,并将结果XML设置为Response
的实体,String
或InputStream
@GET
@Path("/getXML")
@Produces("application/xml")
public Response getXML() {
String xml = // custom marshall
Response result = Response.
status(200).
entity(xml).
type("application/xml").
build();
return result;
}