2012-12-23 87 views
2

我正在使用Axis2 wsdl2java和JAXB數據綁定來爲返回SAML斷言的Web服務創建響應對象。響應對象是使用特定於SAML斷言架構的數據類型生成的,就像您期望的那樣。然而,我正在整合的系統和SDK生成斷言,並將其作爲org.w3c.dom.Element返回。如何將元素編組爲JAXB Axis2響應對象

(所以流動是服務消費者 - >我的web服務 - > SAML身份提供者 - (返回斷言爲元) - >返回斷言對消費者)

我的問題是我怎麼能馬歇爾的說法從Axis2響應對象的元素,而不必手動映射每個元素和屬性?雖然我確信可以開展工作,但看起來很脆弱,容易出錯。

+0

相關的實例:1)http://stackoverflow.com/questions/11152046/unmarshalling-xml-using-jaxb 2)的http: //www.javaprogrammingforums.com/file-input-output-tutorials/4062-how-parse-object-xml-using-jaxb.html 3)http://www.oracle.com/technetwork/articles/javase/index -140168.html#unmars – Brian

+0

另請注意,XML - > POJO是「解組」,POJO - > XML是「編組」。 – Brian

+0

謝謝布萊恩 - 我的問題很混亂,我真正想要發生的是將SOAP2響應對象編組爲SOAP響應消息。 –

回答

1

JAXB (JSR-222)實現是通過異常進行配置的,這意味着您只需要在需要XML表示的地方添加註釋,使其與基於Java類的默認值不同。

JAXB提供API來unmarshal來自許多不同來源(XML到對象)。您可以使用以下方法之一從javax.xml.bind.Unmarshaller上的DOM節點解組。

+0

謝謝布萊斯 - 我需要花一些時間來嘗試一下。看起來我有兩個選擇 - 一個是更改響應對象,以便Axis2可以使用自動生成的MessageInOutReceiver類進行編組,或者我需要更改MessageInOutReceiver中的編組代碼... –

+0

Thanks Blaise。當我看着你的鏈接並重新閱讀我的問題時,我可能會問錯誤的問題。基本上我試圖使用Axis2生成的響應對象,這樣我就可以將SAML斷言整理到SOAP響應中。我認爲使用本地元素數據類型將是最好的方式來做到這一點,但也許有一些使用字符串會更好?或者我應該使用Element和 –