我实现了一项Web服务,但标准定义了我接收W3CEndpointReference作为请求的一部分。在xml中,它看起来有点像:
<input>
问题是我需要到达地址部分,但W3CEndpointReference由于某种原因没有公共地址字段访问器。 到目前为止,我唯一能解决的工作解决方案是在W3CEndpointReference上调用.toString()并使用正则表达式获取地址。
还有其他办法让这个房产出来吗?一些util类或者可能将端点引用转换为BindingProvider或其他一些相关类?
我很感激任何想法。提前致谢
答案 0 :(得分:1)
Apache CXF实现中的解决方案:
public String getWSAAddress(W3CEndpointReference ref) {
Element element = DOMUtils.createDocument().createElement("elem");
ref.writeTo(new DOMResult(element));
NodeList nl = element.getElementsByTagNameNS("http://www.w3.org/2005/08/addressing", "Address");
if (nl != null && nl.getLength() > 0) {
Element e = (Element) nl.item(0);
return DOMUtils.getContent(e).trim();
}
return null;
}
也许不是最漂亮的,但肯定比用正则表达式提取地址更好。