我正在编写一个JAX-WS WebService,但是在从SOAP标头中提取信息时,我遇到了一个绊脚石。我的WebService类用@WebService注释,并且我将WebServiceContext注入到该类中:

@Resource
private WebServiceContext webServiceContext;


但是在这一点上,我对于如何提取SOAP标头信息还是有些困惑。

我使用的是Spring 3,但是那里没有看到任何方法/ util类,这可能会给我们带来一些启发。根据我在网上看到的内容,我可以使用getMessageContext()并将其强制转换为SOAPMessageContext,但是我看到很多失败的人抱怨没有提供解决方案的强制转换问题。

我还没有尝试过,所以在做之前,我想知道这是否是首选方法,或者是否有更好的技术可以使用。

谢谢,

埃里克

最佳答案

我想您可以使用消息处理程序获取SoapMessageContext。您可以检查响应here

像这样实现SoapMessageHandler应该可以工作:

public class SoapHeadersHandler implements SOAPHandler<SOAPMessageContext>
{

  @Override
  public boolean handleMessage(SOAPMessageContext soapMessageContext)
  {
    try
    {
      Object[] headers = soapMessageContext.getHeaders(...);
    }
    catch (SOAPException e)
    {
      // Handle exception
    }

    return true;
  }

}

10-08 16:29