从WSDL生成代码会导致exception

我正在使用Axis2 1.5.1(wsdl2java)从给定的WSDL文件生成代码(客户端存根)。
Web服务由外部应用程序提供。

          ...  

RemoteApplication0.xsd的内容如下:

         

命令行:

 wsdl2java -ss -g -d adb -or -p com.sampleapp.ws.generated.client -uri SampleRemoteProcess.wsdl 

生成过程会导致exception。
堆栈跟踪:

 Using AXIS2_HOME: C:\develop\axis2-1.5.1-bin\axis2-1.5.1\ Using JAVA_HOME: C:\Program Files\Java\jdk1.6.0_21 Retrieving document at 'C:\temp\SampleRemoteProcess.wsdl'. Retrieving schema at 'SampleApp.App.ApplicationManager.RemoteApplication0.xsd', relative to 'file:/C:/temp/SampleRemoteProcess.wsdl'. Retrieving schema at 'SampleApp.App.ApplicationManager.RemoteApplication1.xsd', relative to 'file:/C:/temp/SampleRemoteProcess.wsdl'. Retrieving schema at 'SampleApp.App.ApplicationManager.RemoteApplication2.xsd', relative to 'file:/C:/temp/SampleRemoteProcess.wsdl'. Retrieving schema at 'SampleApp.App.ApplicationManager.RemoteApplication3.xsd', relative to 'file:/C:/temp/SampleRemoteProcess.wsdl'. [ERROR] org.apache.ws.commons.schema.XmlSchemaException: An included schema was announced to have the default target namespace or the target namespace http://tempuri.org/Imports, but has the target namespace http://schemas.microsoft.com/Message java.lang.RuntimeException: org.apache.ws.commons.schema.XmlSchemaException: An included schema was announced to have the default target namespace or the target namespace http://tempuri.org/Imports, but has the target namespace http://schemas.microsoft.com/Message at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1904) at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1927) at org.apache.ws.commons.schema.SchemaBuilder.handleInclude(SchemaBuilder.java:1653) at org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:219) at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:433) at org.apache.axis2.description.WSDLToAxisServiceBuilder.getXMLSchema(WSDLToAxisServiceBuilder.java:144) at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.copyExtensibleElements(WSDL11ToAxisServiceBuilder.java:2319) at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.processTypes(WSDL11ToAxisServiceBuilder.java:413) at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.processTypes(WSDL11ToAxisServiceBuilder.java:402) at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.populateService(WSDL11ToAxisServiceBuilder.java:346) at org.apache.axis2.description.WSDL11ToAllAxisServicesBuilder.populateAllServices(WSDL11ToAllAxisServicesBuilder.java:107) at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.(CodeGenerationEngine.java:147) at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:35) at org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:24) Caused by: org.apache.ws.commons.schema.XmlSchemaException: An included schema was announced to have the default target namespace or the target namespace http://tempuri.org/Imports but has the target namespace http://schemas.microsoft.com/Message at org.apache.ws.commons.schema.SchemaBuilder$2.validate(SchemaBuilder.java:1679) at org.apache.ws.commons.schema.SchemaBuilder.setNamespaceAttributes(SchemaBuilder.java:369) at org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:134) at org.apache.ws.commons.schema.SchemaBuilder.build(SchemaBuilder.java:121) at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:445) at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:368) at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1898) ... 13 more Exception in thread "main" org.apache.axis2.wsdl.codegen.CodeGenerationException: Error parsing WSDL at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.(CodeGenerationEngine.java:153) at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:35) at org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:24) Caused by: org.apache.axis2.AxisFault: org.apache.ws.commons.schema.XmlSchemaException: An included schema was announced to have the default target namespace or the target namespace http://tempuri.org/Imports, but has the target namespace http://schemas.microsoft.com/Message at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.populateService(WSDL11ToAxisServiceBuilder.java:396) at org.apache.axis2.description.WSDL11ToAllAxisServicesBuilder.populateAllServices(WSDL11ToAllAxisServicesBuilder.java:107) at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.(CodeGenerationEngine.java:147) ... 2 more Caused by: java.lang.RuntimeException: org.apache.ws.commons.schema.XmlSchemaException: An included schema was announced to have the default target namespace or the target namespace http://tempuri.org/Imports, but has the target namespace http://schemas.microsoft.com/Message at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1904) at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1927) at org.apache.ws.commons.schema.SchemaBuilder.handleInclude(SchemaBuilder.java:1653) at org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:219) at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:433) at org.apache.axis2.description.WSDLToAxisServiceBuilder.getXMLSchema(WSDLToAxisServiceBuilder.java:144) at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.copyExtensibleElements(WSDL11ToAxisServiceBuilder.java:2319) at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.processTypes(WSDL11ToAxisServiceBuilder.java:413) at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.processTypes(WSDL11ToAxisServiceBuilder.java:402) at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.populateService(WSDL11ToAxisServiceBuilder.java:346) ... 4 more An included schema was announced to have the default target namespace or the target namespace http://tempuri.org/Imports, but has the target namespace http://schemas.microsoft.com/Message at org.apache.ws.commons.schema.SchemaBuilder$2.validate(SchemaBuilder.java:1679) at org.apache.ws.commons.schema.SchemaBuilder.setNamespaceAttributes(SchemaBuilder.java:369) at org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:134) at org.apache.ws.commons.schema.SchemaBuilder.build(SchemaBuilder.java:121) at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:445) at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:368) at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1898) ... 13 more 

似乎存在命名空间问题,但我不知道如何解决它。
任何人都可以给我一个提示!

问题是你使用“包含”。 “include”ed schemas必须与include所在的模式具有相同的目标名称空间(您实际上是在多个文件中拆分相同的名称空间)。 您必须“导入”架构以使用具有不同目标命名空间的另一个架构文件。

错误消息非常具有描述性:另一个模式中 ‘ed的模式始终需要与导入模式具有相同的目标名称空间。 在RemoteApplication0.xsd文件中,您必须将目标命名空间http://schemas.microsoft.com/Message更改为http://tempuri.org/Imports