Apache Axis WSDL2Java错误 - 缺少<soap:fault>元素</soap:fault>

时间:2010-01-25 23:07:17

标签: wsdl2java soapfault

我们正在将第三方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(未知来源)

任何人都已经遇到过这个问题并解决了?

2 个答案:

答案 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