我正在使用jax-ws从JAVA调用使用WS-Security的SOAP服务。
问题是响应包含一些mustUnderstand标头,而我得到了一个不被理解的Element SoapFaultException。
响应头看起来像这样:
<s:Header>
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<u:Timestamp u:Id="_0">
<u:Created>2011-12-19T15:38:49.023Z</u:Created>
<u:Expires>2011-12-19T15:43:49.023Z</u:Expires>
</u:Timestamp>
</o:Security>
我可以为该标头添加一个伪SOAPHandler吗?还是将其修改为mustUnderstand =“ 0”?如何?
最佳答案
错过了覆盖处理程序中的getHeaders()方法。重写getHeaders()方法
@Override
public Set<QName> getHeaders() {
final QName securityHeader = new QName(
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd",
"Security",
"wsse");
final HashSet headers = new HashSet();
headers.add(securityHeader);
// notify the runtime that this is handled
return headers;
}