访问java Web服务代码中的SOAP Header(不是通过处理程序)

时间:2013-02-21 08:19:31

标签: java web-services soap

我需要访问我的webservice代码中的SOAPHeader(我需要它使用外部库从头部的安全部分生成一些对象)。

它在SOAPHandler中工作正常,但如果我在实际的webservice方法中尝试以下操作,我会得到一个例外。

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

例外:

JAXBBlockImpl block object is already consumed. Processing cannot continue.

我想做以下其中一项:

  1. 处理处理程序中的标头,并将结果对象提供给webservice方法。
  2. 在webservice方法中处理标题。
  3. 有谁能告诉我如何做其中任何一个步骤?

    提前致谢。

1 个答案:

答案 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");