我正在尝试在服务器中运行服务。但是当我运行它时,它会抛出以下异常:
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文件。
答案 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>
您可以从中获取更多信息 how-can-i-make-this-a-valid-wsdl和 wsdl-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。