2012-02-22 37 views
1

我遇到了JAXB解組的問題,我不知道如何解決。它涉及到解組SOAP頭。在我的SOAPHandler中,我有一個SOAPMessageContext對象,它有一個getHeaders()方法。該方法需要QNameJAXBContext作爲參數,並且會自動解組任何匹配標頭。如何在無法訪問解組器的情況下調試JAXB解組?

我的問題是,我正在傳遞適當的標題,但未編組的對象返回空(即:所有字段爲空)。

我有點難住,因爲我無法控制任何解組;我無法設置驗證器(並查看是否存在模式問題)或其他任何事情,因爲一切都發生在「黑匣子」中。我所能通過的就是該方法的JAXBContext

有什麼我可以做的,弄清楚爲什麼解組失敗,即使沒有異常被拋出?

感謝,

埃裏克

回答

0

好了 - 這樣一串撓頭的後,我意識到,我可以嘗試複製getHeaders()方法,我自己並啓用驗證的/ etc上的解組,找出問題出在哪裏。

我結束了使用提取的標題作爲一個XML節點如下:

 SOAPHeader soapHeader = context.getMessage().getSOAPHeader(); 
     Object z; 
     XMLUtil xmlUtil = new XMLUtil(); 
     for(Iterator<SOAPElement> it = soapHeader.getChildElements(new ObjectFactory().createServiceContext(null).getName()); it.hasNext();){ 
      SOAPElement sc = it.next(); 
      z = xmlUtil.unmarshall(sc, ServiceContextType.class); 
     } 

在我xmlUtil類,我可以創建自己的JAXB解組,並啓用模式驗證,並僅在getHeaders不依賴()方法爲我做所有事情。

希望這可以幫助別人。

感謝,

埃裏克