[英]JAXB or Xstream on a Jersey Restful application
我想知道哪種解決方案更適合Jersey Rest Web服務。 在某些情況下,JAXB無法處理某些類型。 使用XStream更好嗎?
注意:我是EclipseLink JAXB(MOXy)的負責人,也是JAXB(JSR-222)專家組的成員。
我想知道哪種解決方案更適合Jersey Rest Web服務。
JAXB(JSR-222)是JAX-RS的默認綁定層。 這意味着如果您有以下方法,JAXB將自動用於將返回類型( Customer
)轉換為XML(以及使用Jersey時的JSON)。
@GET
@Produces(MediaType.APPLICATION_XML)
@Path("{id}")
public Customer read(@PathParam("id") long id) {
return entityManager.find(Customer.class, id);
}
如果您需要更多地控制JAXBContext,可以使用名為ContextResolver
的JAX-RS機制:
在某些情況下,JAXB無法處理某些類型
JAXB能夠處理所有類型,默認情況下或通過使用XmlAdapter
。 下面是一些示例,其中XmlAdapter
與Joda-Time類型和一些不可變域對象一起使用:
使用XStream更好嗎?
下面是我寫的博客條目的鏈接,我使用您可能感興趣的JAXB和XStream將相同的對象模型映射到同一個XML文檔:
諸如MOXy之類的JAXB實現還包含許多有用的擴展,例如基於XPath的映射( @XmlPath
)和外部映射文檔:
有關在Jersey中使用MOXy作為JAXB提供程序的示例,請參閱:
取決於您的使用案例 - 如果您認為JAXB將是重大限制,您可以使用XStream。 Btw Jersey最近增加了對MOXy的支持,這可以幫助你克服JDK中JAXB Reference impl中的一些極端情況。
Pro JAXB
Con JAXB
Pro XStream:
Con XStream:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.