什么更有效率

时间:2013-09-30 16:11:54

标签: rest jaxb jersey marshalling

我有一个架构,这将产生一个像这样的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对象转换而来。

1 个答案:

答案 0 :(得分:1)

如果您不需要读取或存储XML有效负载,那么无论是手动还是通过Jersey进行解组,从性能角度来看都不应有任何区别,但后者将减少代码和工作量。

如果您确实需要读取或存储XML有效负载,那么让泽西为您进行解组是效率较低的,因为它需要您稍后再重新运行它。在这种情况下,您可能只需获取原始字符串。