我正在使用Apache CXF 2.5.0,JDK 7和Eclipse Helios EE开发Web服务客户端。 我在eclipse中执行Web服务客户端时遇到了以下错误。
线程“main”中的异常javax.xml.ws.soap.SOAPFaultException:无法解析对策略#AddressingPolicy的引用..
到目前为止,我已按照以下步骤部署客户端。
在eclipse helios EE中创建了一个java项目,并将CXF运行时添加到项目中。
使用Apache CXF 2.5.0 WSDL2Java为客户端生成了java类(包括-exsh true选项以处理标头)。这些类是在eclipse src目录中生成的。
在客户端类中实现main方法以调用Web服务。
当我执行客户端时,我得到了上述异常。
我检查了WSDL,它有一个带有xml id = #AddressingPolicy的Policy Reference元素和另一个带有xml id = #TlsPolicy的policy Reference元素。使用wsp:Policy元素在WSDl末尾的WSDL中给出了相应的策略。
我无法修改WSDL,因为它已经部署为外部服务并提供给我来开发客户端。
以前有人遇到过与Apache CXF 2.5.0类似的问题。此外,我觉得这可能是我正在使用的CXF版本的问题。 Apache CXF 2.5.0是否支持WSDL中的本地策略引用。
感谢您的回复。
答案 0 :(得分:0)
我遇到了同样的问题。我找到的修复是修改WSDL并使用 wsu:Id 引用而不是 xml:id 。
<wsp:Policy wsu:Id="AddressingPolicy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<...>
</wsp:Policy>
我知道你声明你不能改变WSDL,但我相信这不是真的。我提到的修改不会改变线路上的SOAP请求/响应的内容,因此您仍然可以与现有的Web服务进行互操作。