我正在编写一个JAX-WS WebService,但是当涉及从SOAP头中提取信息时,我遇到了一个小绊脚石。我的WebService类使用@WebService注释,我将WebServiceContext注入到类中:
@Resource
private WebServiceContext webServiceContext;
但是我现在有点担心如何提取SOAP头信息。
我正在使用Spring 3,但是还没有看到任何方法/ util类,它们可以解释这个问题。从我在网上看到的情况来看,我可以使用getMessageContext()
并投射到SOAPMessageContext
,但我发现有很多人在这个级别上失败,抱怨没有提供解决方案的问题。
我还没有尝试过,所以在此之前,我想知道这是否是首选方法,或者是否有更好的技术可供使用。
谢谢,
埃里克
答案 0 :(得分:2)
我猜你可以使用消息处理程序获取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;
}
}
答案 1 :(得分:1)
在这里发布我的操作,因为它不需要创建额外的类
final HttpServletRequest req = (HttpServletRequest) wsCtxt.getMessageContext().get(MessageContext.SERVLET_REQUEST);
String headerValue = req.getHeader("myHeaderName");