我需要访问我的webservice代码中的SOAPHeader(我需要它使用外部库从头部的安全部分生成一些对象)。
它在SOAPHandler中工作正常,但如果我在实际的webservice方法中尝试以下操作,我会得到一个例外。
SOAPMessageContext soapMsgContext = (SOAPMessageContext) webServiceContext.getMessageContext();
SOAPHeader soapHeader = soapMsgContext.getMessage().getSOAPHeader();
例外:
JAXBBlockImpl block object is already consumed. Processing cannot continue.
我想做以下其中一项:
有谁能告诉我如何做其中任何一个步骤?
提前致谢。
答案 0 :(得分:0)
我得到了它的工作,不知道这是否是一个非常好的解决方案,所以我现在暂时打开这个问题。
在SOAPHandler中,我将对象放在servlet请求中,如下所示:
servletRequest.setAttribute("param-name", myObject);
并在webservice方法中检索它,如下所示:
MessageContext messageContext = webServiceContext.getMessageContext();
HttpServletRequest servletRequest = HttpServletRequest)messageContext.get(MessageContext.SERVLET_REQUEST);
myObject = (myObject) servletRequest.getAttribute("param-name");