我有一个架构,这将产生一个像这样的XML
<root-element>
<element_1>value_a<element_1>
<element_2>value_b<element_2>
<element_3>value_c<element_3>
<element_1>value_a<element_1>
<element_2>value_b<element_2>
<element_3>value_c<element_3>
</root-element>
现在,在我的REST方法中,有两种不同的方法接收输入调用
@POST
@Path(PATH+"/{" + PATH_2 + "}/query-by-list." + XML)
@Consumes (MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public Response getShipmentListXML (String xmlRequest)
和其他我们能做的就像
@POST
@Path(PATH+"/{" + PATH_2 + "}/query-by-list." + XML)
@Consumes (MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public Response getShipmentListXML (JAXBElement<ShipmentListType> jaxbShipmentListType)
简而言之,第一种方法是获取“原始”请求,第二种方法是将请求编组为适当的jaxb元素类型。
问题是,哪一个会更快?正在接受原始请求的那个或者正在编组的那个......或者......会提出任何请求吗?
P.S: 原始请求无论如何都将输入的原始字符串编组到jaxbobject中。唯一的区别是输入请求(xml正文)也在其他地方使用。可以从那些jaxb对象转换而来。
答案 0 :(得分:1)
如果您不需要读取或存储XML有效负载,那么无论是手动还是通过Jersey进行解组,从性能角度来看都不应有任何区别,但后者将减少代码和工作量。
如果您确实需要读取或存储XML有效负载,那么让泽西为您进行解组是效率较低的,因为它需要您稍后再重新运行它。在这种情况下,您可能只需获取原始字符串。