我有一個應用程序,它是一個使用java JWS完成的WS調度程序,它可以獲取ws請求,選擇必須調用哪些ws,調用它,獲取響應,解析並將其返回給客戶端。Java WS:如何從模型對象構建ElementNSImpl?
要做到這一點,我有一個與我的相關服務,並與服務的具體信息另一部分信息的一部分組成的XML必須被調用,所以2個diferent電話可能是:
<petition>
<generic><servicename>ws1</servicename></generic>
<especific>.... whatever....</especific>
</petition>
<petition>
<generic><servicename>ws2</servicename></generic>
<especific>.... whatever needed for ws3....</especific>
</petition>
和他們的回報;
<return>
<generic><servicename>ws1</servicename></generic>
<specific><city>bilbao</city></specific>
</return>
<return>
<generic><servicename>ws2</servicename></generic>
<specific>
<person>
<name>Olof</name>
</person>
</specific>
</return>
要做到這一點,我已經(均在請願書和響應)使用的標籤@XmlAnyElement(LAX = FALSE)在我的模型的「特定」所以,在我的服務,我得到的所有來電作爲JWS不能解析的內部(特定部分)的「請願」;我將在每一個服務的特定部分使用編組,並讓他知道哪些特定的模型,必須使用稱爲解析它:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {})
@XmlRootElement(name = "petition")
public class Petition{
....
@XmlAnyElement(lax=false)
private Object specific;
....
}
(Same for the response object.)
這項工作做得很好,當我從我所說的服務和回報目標它直接作爲'特定'字段中的ElementNSImpl對象,但通常我必須解析它(通常,我返回的特定對象與返回給我的對象的類型不同),我無法做到這一點。
在這種情況下,我必須創建一個新的對象(從我想返回的類型),填充它獲得的信息並將其返回給我的客戶端。好吧,我這樣做,我在它的服務的特定數據對象中建立一個「響應」設置並嘗試返回它,但是WS不向客戶端返回任何內容(長度爲200的HTTP響應:0)...
而且,如果我設置,手動,應對「空」對象的「特殊」部分以及整理和我的客戶接受:
<response>
<generic><servicename>ws2</servicename></generic>
</response>
所以我認爲這是等待「ElementNSImpl '但我不知道如何從JAXB註釋的對象中構建它。