2013-02-21 16 views
0

我需要訪問我的web服務代碼中的SOAPHeader(我需要它使用外部庫從頭文件的安全部分生成一些對象)。訪問java web服務代碼中的SOAPHeader(不通過處理程序)

它在SOAPHandler中正常工作,但如果我在實際的webservice方法中嘗試以下操作,我會收到異常。

SOAPMessageContext soapMsgContext = (SOAPMessageContext) webServiceContext.getMessageContext(); 
SOAPHeader soapHeader = soapMsgContext.getMessage().getSOAPHeader(); 

例外:

JAXBBlockImpl block object is already consumed. Processing cannot continue. 

我想執行以下操作之一:

  1. 過程在處理程序中的報頭,並得到生成的對象到web服務方法。
  2. 在webservice方法中處理標題。

任何人都可以告訴我如何執行以下任一步驟?

在此先感謝。

回答

0

我得到它的工作,不知道這是否是一個漂亮的解決方案,所以我現在留下的問題。

在SOAPHandler我把對象在servlet請求像這樣:

servletRequest.setAttribute("param-name", myObject); 

和web服務方法I檢索它像這樣:

MessageContext messageContext = webServiceContext.getMessageContext(); 
HttpServletRequest servletRequest = HttpServletRequest)messageContext.get(MessageContext.SERVLET_REQUEST); 
myObject = (myObject) servletRequest.getAttribute("param-name");