我们正在将第三方SOAP Web服务集成到我们的应用程序中。 WSDL与SOAPUI工具一起使用,其中样本请求和响应工作正常。
当我们尝试与apache Axis 1.3集成时,我们尝试使用WSDL的WSDL2JAVA。我们收到了以下错误
java.io.IOException:错误:在操作“serviceFault”中缺少元素inFault“serviceFault”,在绑定saveRegistration中 在org.apache.axis.wsdl.symbolTable.SymbolTable.faultsFromSOAPFault(SymbolTable.java:2858) 在org.apache.axis.wsdl.symbolTable.SymbolTable.populateBindings(SymbolTable.java:2549) 在org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:744) 在org.apache.axis.wsdl.symbolTable.SymbolTable.add(SymbolTable.java:543) 在org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:518) 在org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:495) 在org.apache.axis.wsdl.gen.Parser $ WSDLRunnable.run(Parser.java:361) 在java.lang.Thread.run(未知来源)
任何人都已经遇到过这个问题并解决了?
答案 0 :(得分:14)
我相信这个版本有JIRA。
说明
当你使用soap 1.2绑定soap soap时,没有正确提取fault元素,导致错误
ERROR: Missing <soap:fault> element inFault "..." in operation "...", in binding ...
他们的临时建议是添加一行代码并重新编译Axis1 ... Nahh。
就个人而言,我刚刚下载了wsdl文件(它是一个Axis 2服务,我有一个Axis 1.5客户端)并编辑了以下所有行的命名空间:
<wsdl:fault name="Exception">
<soap12:fault use="literal" name="Exception"/>
</wsdl:fault>
为:
<wsdl:fault name="Exception">
<soap:fault use="literal" name="Exception"/>
</wsdl:fault>
根据建议here。
然而,升级到Axis2是最好的长期解决方案。在解决了这个问题后,我发现WSDL2JAVA生成的代码中存在更多错误。
答案 1 :(得分:0)
我通过如下更改XML名称空间解决了这个问题:
更改此
xmlns:soap12 =“ http://schemas.xmlsoap.org/wsdl/soap12/”
到
最后仅xmlns:soap12 =“ http://schemas.xmlsoap.org/wsdl/ 肥皂 /”
仅 12 个
。