【问题标题】:Create Java API from WSDL从 WSDL 创建 Java API
【发布时间】:2012-07-20 12:35:02
【问题描述】:

我想创建 java 类或使用此 WSDL 中的 API (https://secure.myclang.com/app/api/soap/public/wsdl/index.php?version=1.10) 我试过axis2 -1.6.2,但我没有让它工作..

有人可以帮助我,还是 WSDL 有问题?

我得到的错误:

 C:\Users\Gynnad\Downloads\axis2-1.5.1-bin\axis2-1.5.1\bin>wsdl2java.bat -uri 
 https://secure.myclang.com/app/api/soap/public/wsdl/index.php?version=1.10
 Using AXIS2_HOME:   C:\Users\Gynnad\Downloads\axis2-1.6.2-bin\axis2-1.6.2
 Using JAVA_HOME:    C:\Program Files (x86)\Java\jdk1.6.0_31
 Retrieving document at 'https://secure.myclang.com/app/api/soap/public/wsdl/index.php?version=1.10'.
 log4j:WARN No appenders could be found for logger     (org.apache.axis2.description.WSDL11ToAllAxisServicesBuilder).log4j:WARN Please initialize      the log4j system properly.
 Exception in thread "main" org.apache.axis2.wsdl.codegen.CodeGenerationException: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGenerationEngine.java:293)
    at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:35)
    at org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:24)
 Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension.engage(SimpleDBExtension.java:53)
    at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGenerationEngine.java:246)
    ... 2 more
 Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension.engage(SimpleDBExtension.java:50)
    ... 3 more
 Caused by: org.apache.axis2.schema.SchemaCompilationException: can not find type {http://schemas.xmlsoap.org/soap/encoding/}Array from the parent schema https://secure.myclang.com/app/api/soap/public/index.php?version=1.10
    at org.apache.axis2.schema.SchemaCompiler.copyMetaInfoHierarchy(SchemaCompiler.java:1371)
    at org.apache.axis2.schema.SchemaCompiler.processComplexContent(SchemaCompiler.java:1333)
    at org.apache.axis2.schema.SchemaCompiler.processContentModel(SchemaCompiler.java:1228)
    at org.apache.axis2.schema.SchemaCompiler.processComplexType(SchemaCompiler.java:1172)
    at org.apache.axis2.schema.SchemaCompiler.processNamedComplexSchemaType(SchemaCompiler.java:1092)
    at org.apache.axis2.schema.SchemaCompiler.processSchema(SchemaCompiler.java:1006)
    at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:645)
    at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:604)
    at org.apache.axis2.schema.SchemaCompiler.process(SchemaCompiler.java:2069)
    at org.apache.axis2.schema.SchemaCompiler.processParticle(SchemaCompiler.java:1952)
    at org.apache.axis2.schema.SchemaCompiler.processComplexType(SchemaCompiler.java:1156)
    at org.apache.axis2.schema.SchemaCompiler.processNamedComplexSchemaType(SchemaCompiler.java:1092)
    at org.apache.axis2.schema.SchemaCompiler.processSchema(SchemaCompiler.java:1006)
    at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:645)
    at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:604)
    at org.apache.axis2.schema.SchemaCompiler.process(SchemaCompiler.java:2069)
    at org.apache.axis2.schema.SchemaCompiler.processParticle(SchemaCompiler.java:1952)
    at org.apache.axis2.schema.SchemaCompiler.processComplexType(SchemaCompiler.java:1156)
    at org.apache.axis2.schema.SchemaCompiler.processAnonymousComplexSchemaType(SchemaCompiler.java:1055)
    at org.apache.axis2.schema.SchemaCompiler.processSchema(SchemaCompiler.java:1009)
    at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:645)
    at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:615)
    at org.apache.axis2.schema.SchemaCompiler.compile(SchemaCompiler.java:423)
    at org.apache.axis2.schema.SchemaCompiler.compile(SchemaCompiler.java:292)
    at org.apache.axis2.schema.ExtensionUtility.invoke(ExtensionUtility.java:102)
    ... 8 more

【问题讨论】:

  • 它是如何“不起作用”的?您在寻找什么样的答案,可以复制和粘贴的代码块?
  • @OscarGomez 我添加了一些错误!

标签: java api soap wsdl


【解决方案1】:

你可以试试这个:

WSDL2JAVA

编辑:

根据您的错误,我认为问题出在 WSDL 本身:

org.apache.axis2.schema.SchemaCompilationException: can not find type {http://schemas.xmlsoap.org/soap/encoding/}Array from the parent schema https://secure.myclang.com/app/api/soap/public/index.php?version=1.10

【讨论】:

  • 使用这个我已经尝试过,我得到这个错误:完成过程时发生错误 -java.lang.InterruptedException: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
  • @Gynnad 我认为问题出在 WSDL 而不是解析器
  • 恐怕也是..所以没有在Java中使用这些WSDL的解决方案?
  • @Gynnad 我不是 WSDL 方面的专家,但恕我直言,除非 WSDL 被更改,否则您将无法使用它。您可以尝试将其解析为其他语言,以确保它是 WSDL 而不是其他的。
  • @Gynnad 那是不可能的,WSDL 并不特定于任何语言。
【解决方案2】:

你也可以试试

Apache CXF - WSDL to Java

它也有 Maven Plugin 做同样的事情

【讨论】:

    猜你喜欢
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    相关资源
    最近更新 更多