2014-01-09 76 views
1

在我當前的項目中,我們使用JAXB beans for Hibernate,並通過[REST API] [1]以XML和JSON格式發送數據。我們希望能夠在我們用作REST VO的Result對象中任意包含任何JAXB bean(例如,作爲<xsd:any>元素),而不必爲可能包含的每種不同類型分別編組。看起來最簡單的方法是使每個bean都有@XmlRootElement註釋。將@XmlRootElement添加到每個JAXB bean是否有任何問題?

  1. 這是「無縫」編組的好方法嗎?
  2. 這樣做有後果嗎?

我們使用Java 1.6,用於jaxb的EclipseLink/MOXy,用於REST的Jersey 1.x以及Tomcat應用服務器。我們的bean是使用xjc從XML Schema文件生成的,並使用annox在生成時添加註釋。

[1]:在理想世界中的數據對象將是從域對象分開,但是這是一個小團隊的一個小項目,所以數據庫和API之間的隔離是沒有必要的

回答

2

是對每個JAXB bean添加@XmlRootElement有沒有問題?


我們希望能夠任意包括結果

的通用Result對象與字段/屬性與@XmlAnyElement(lax=true)標註的是內部的任何JAXB豆可以使用用@XmlRootElement註釋的任意有效載荷對象創建通用消息的好方法。


我們使用作爲REST VO(例如作爲元素),而無需爲每個不同類型的,可能是包括一個 單獨 編組方法。

我在這裏擔心的是您返回的數據不會按您希望的方式顯示。 SOAP具有數據在主體中的信封消息格式。一般來說REST沒有這個。當我訪問RESTful端點時,我通常不會期望某種信封封裝數據。

相關問題