0

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

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

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

例外:

JAXBBlockImpl block object is already consumed. Processing cannot continue.

我想做以下其中一项:

  1. 在处理程序中处理标头并将结果对象获取到 webservice 方法。
  2. 处理 webservice 方法中的标头。

谁能告诉我如何执行这些步骤中的任何一个?

提前致谢。

4

1 回答 1

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");
于 2013-02-21T10:20:04.000 回答