WSDL定位器中的异常

时间:2012-09-06 11:40:43

标签: java wsdl cxf

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

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文件。

3 个答案:

答案 0 :(得分: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和单独的文件夹中)

答案 1 :(得分:3)

在我的情况下,问题是我尝试使用http://foo.bar/ws/WSName之类的网址访问客户端中的WS,我需要使用http://foo.bar/ws/WSName?WSDL之类的网址(请注意&WSDL部分)。

希望这有助于某人。

答案 2 :(得分:1)

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

我猜测你没有包含一个<definitions>元素,其中一个是预期/需要的。但无论如何,您需要修复用于定义服务的WSDL。