从 Onvif wsdl 文件生成客户端 Web 服务



我正在尝试从位于此处的 Onvif 标准 wsdl 文件创建客户端 Web 服务。在使用 Apache CFX 完成 Eclipse 向导中的所有步骤后,我得到以下输出:


Loading FrontEnd jaxws ...
Loading DataBinding jaxb ...
wsdl2java -client -d /storage/workspaces/homework/ws1/.cxftmp/src -classdir /storage/workspaces/homework/ws1/build/classes -impl -validate -exsh false -dns true -dex true -wsdlLocation http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl -verbose -defaultValues -fe jaxws -db jaxb -wv 1.1 http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl
wsdl2java - Apache CXF 2.7.10
Feb 19, 2014 12:38:27 PM org.apache.cxf.tools.validator.internal.WSDLRefValidator collectValidationPoints
WARNING: WSDL document http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl does not define any services
WSDLToJava Error: Schema Error : src-resolve: Cannot resolve the name 'wsa:EndpointReferenceType' to a(n) 'type definition' component.
org.apache.cxf.tools.common.ToolException: Schema Error : src-resolve: Cannot resolve the name 'wsa:EndpointReferenceType' to a(n) 'type definition' component.
    at org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding.validateSchema(JAXBDataBinding.java:1001)
    at org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding.addSchemas(JAXBDataBinding.java:652)
    at org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:443)
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.generateTypes(WSDLToJavaContainer.java:714)
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.processWsdl(WSDLToJavaContainer.java:270)
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:164)
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:412)
    at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:103)
    at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:113)
    at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86)
    at org.apache.cxf.tools.wsdlto.WSDLToJava.main(WSDLToJava.java:184)
Caused by: org.xml.sax.SAXParseException; src-resolve: Cannot resolve the name 'wsa:EndpointReferenceType' to a(n) 'type definition' component.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:347)
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaErr(XSDHandler.java:4166)
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaError(XSDHandler.java:4145)
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getGlobalDecl(XSDHandler.java:1678)
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDElementTraverser.traverseNamedElement(XSDElementTraverser.java:405)
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDElementTraverser.traverseLocal(XSDElementTraverser.java:194)
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.traverseLocalElements(XSDHandler.java:3618)
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.parseSchema(XSDHandler.java:633)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadSchema(XMLSchemaLoader.java:616)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:574)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:540)
    at com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory.newSchema(XMLSchemaFactory.java:252)
    at javax.xml.validation.SchemaFactory.newSchema(SchemaFactory.java:627)
    at org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding.validateSchema(JAXBDataBinding.java:995)
    ... 10 more

我是网络服务的新手。谁能解释我的问题是什么,我应该怎么做来解决它?

最后,我设法找到了适合我的方案的解决方法:

我没有通过Eclipse生成Java类,而是直接通过CLI使用apache-cfx教程中建议的命令来生成Java类。在此之后,我在 Eclipse 项目中导入了生成的文件。对于那些需要在这个问题上进行更多挖掘的人,在这里我对一个非常相似的问题做出了回应。

希望对某人有用。

最新更新