2017-01-19 49 views
0

使用@WebService@WebMethod定義的JAX-WS服務利用JAXB將XML轉換爲Java對象。對於大多數用例來說,這太棒了!然而,我需要與一些使用Axis 1編寫的遺留代碼進行接口,這些代碼專門在org.w3c.dom.Element對象上運行 - 換句話說,只要我獲得它們,我就會有效地將參數直接轉換回XML,這似乎非常低效。是否可以在不使用@WebServiceProvider的情況下訪問JAX-WS中的原始請求XML?

因此,我一直在尋找一種方法來接收和返回來自JAX-WS服務的原始XML,不管是字符串還是對象。

我已經能夠得到我所需要使用@WebServiceProvider貫徹Provider<Source>接口的功能,但這種感覺有點太低級了那種我正在做的事情 - 我不能使用@WebMethod來輕鬆設置路由;相反,我必須從WebServiceContext得到PATH_INFO,並擺弄字符串以獲取我需要的信息。

所以我的問題是,有沒有辦法在JAX-WS服務中使用原始XML(有效切除JAXB)而不降低到@WebServiceProvider的水平?

回答

0

我只是碰到我自己的答案迷迷糊糊的,所以這裏是爲別人誰擁有這個問題:

正如documentation提到,JAXB可以名帥xsd:anyTypeObject。生成的對象的具體類型是apache.xerces.internal.dom.ElementNSImpl,這是org.w3c.dom.Element的實現 - 也就是我所需要的!

因此,我的問題的解決方案只是使用Object作爲我的方法中的參數和返回類型。不是一個大規模清潔的感覺解決方案,但它的工作。

相關問題