2

我正在尝试在服务器中运行服务。但是当我运行它时,它会抛出以下异常:

javax.wsdl.WSDLException: WSDLException (at /soapenv:Envelope): faultCode=INVALID_WSDL: Expected element '{http://schemas.xmlsoap.org/wsdl/}definitions'.
        at com.ibm.wsdl.xml.WSDLReaderImpl.checkElementName(Unknown Source)
        at com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions(Unknown Source)
        at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
        at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
        at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:229)
        at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:179)
        at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:91)

我需要将 WSDL 文件放在项目的什么位置?我已将 WSDL 生成到 Java 客户端代码并将其导入到我的项目中。在一个单独的文件夹中,我导入了所有 WSDL 文件。

4

3 回答 3

3

看起来您的 WSDL 无效。正如 Andrzej Doyle 所说,您的 WSDL 可能缺少该元素,或者如果您的 WSDL 具有该元素,那么它包含错误的信息。它应该看起来像...

<definitions name="HelloService"
targetNamespace="http://www.examples.com/wsdl/HelloService.wsdl" 
xmlns="http://schemas.xmlsoap.org/wsdl/" 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
xmlns:tns="http://www.examples.com/wsdl/HelloService.wsdl" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
</definitions>
  • 您的 targetnamespace 标记是否包含 wsdl 的正确位置?

您可以从 how-can-i-make-this-a-valid-wsdlwsdl-soap-test-with-soapui获得更多信息

注意:无论如何,您必须更正您的 wsdl。因此,请确保您在两个地方都更改了您的 wsdl(在实际的 wsdl 和您的单独文件夹中)

于 2012-09-07T07:31:18.740 回答
3

就我而言,问题是我试图使用类似 URL 访问客户端中的 WS,http://foo.bar/ws/WSName我需要使用类似的 URL http://foo.bar/ws/WSName?WSDL(注意&WSDL部分)。

希望这可以帮助某人。

于 2015-06-09T15:22:49.187 回答
1

如异常所述,您的 WSDL 无效。

我会冒险猜测您没有包含<definitions>预期/需要的元素。但在任何情况下,您都需要修复定义服务的 WSDL。

于 2012-09-06T11:50:11.637 回答