我正在编写一个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;
}
}