解析WSDL时出现Wsimport错误

时间:2016-10-29 17:11:25

标签: java web-services soap wsimport

我需要在我的应用程序中使用SOAP WebService,因此我获得了WSDL文件以在wsimport的帮助下生成所需的类。问题是在解析过程中我收到以下错误:

  

[错误]无效的扩展元素:“soap:body”(在命名空间中)   “http://schemas.xmlsoap.org/wsdl/soap/”)

我尝试了-extension标志但没有成功。

过去有没有人遇到过类似的问题?如果是的话,你是如何解决的?

1 个答案:

答案 0 :(得分:1)

不确定这是否是全部错误...

针对该更简单的WSDL尝试wsimport返回:

[ERROR] invalid extension element: "soap:header" (in namespace "http://schemas.xmlsoap.org/wsdl/soap/")

错误消息没有给出位置,但是问题是父<soap:header>下的<soap:body><fault>

<fault name="Error">
    <soap:header message="sm:GetSeatMapCountsErrorOutput" part="header" use="literal"/>
    <soap:header message="sm:GetSeatMapCountsErrorOutput" part="header2" use="literal"/>
    <soap:body parts="body" use="literal" />
</fault>

通常情况是这样:

<fault name="Error">
    <soap:fault name="Error" use="literal" /> 
</fault>

在前面的注释(http://ws.e-podroznik.pl/?wsdl)中的链接中看起来这是正确的。也许此后已解决?


要弄清楚无效<soap:header>在消息中的位置,一种技巧是使用wsimport -Xdebug,它将在输出中包括异常的堆栈跟踪:

Caused by: com.sun.tools.ws.wsdl.framework.ParseException: invalid extension element: "soap:header" (in namespace "http://schemas.xmlsoap.org/wsdl/soap/")
    at com.sun.tools.ws.wsdl.parser.Util.fail(Util.java:186)
    at com.sun.tools.ws.wsdl.parser.SOAPExtensionHandler.handleFaultExtension(SOAPExtensionHandler.java:413)
    at com.sun.tools.ws.api.wsdl.TWSDLExtensionHandler.doHandleExtension(TWSDLExtensionHandler.java:87)

其中的线索是SOAPExtensionHandler.handleFaultExtension(),表明问题出在父元素<fault>之下。

类似地,可能是handleBindingExtension()下的<binding>handleOperationExtension()下的<operation>,等等。