从WSDL生成代码会导致异常

| 我正在使用Axis2 1.5.1(wsdl2java)从给定的WSDL文件生成代码(客户端存根)。 Web服务由外部应用程序提供。
<?xml version=\"1.0\" encoding=\"utf-8\"?>  
<wsdl:definitions xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"  
xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility- 1.0.xsd\"  
xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"   
xmlns:wsam=\"http://www.w3.org/2007/05/addressing/metadata\"             
xmlns:tns=\"http://tempuri.org/\"   
xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\"     
xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2004/09/policy\" 
xmlns:i0=\"http://schemas.microsoft.com/ws/2005/02/mex/bindings\" 
xmlns:wsap=\"http://schemas.xmlsoap.org/ws/2004/08/addressing/policy\" 
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"  
xmlns:msc=\"http://schemas.microsoft.com/ws/2005/12/wsdl/contract\" 
xmlns:wsaw=\"http://www.w3.org/2006/05/addressing/wsdl\" 
xmlns:soap12=\"http://schemas.xmlsoap.org/wsdl/soap12/\"   
xmlns:wsa10=\"http://www.w3.org/2005/08/addressing\"   
xmlns:wsx=\"http://schemas.xmlsoap.org/ws/2004/09/mex\"   
name=\"service\" targetNamespace=\"http://tempuri.org/\"   
xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">  
<wsdl:types>  
<xsd:schema targetNamespace=\"http://tempuri.org/Imports\">  
<xsd:include schemaLocation=\"SampleApp.App.ApplicationManager.RemoteApplication0.xsd\" />  
<xsd:include schemaLocation=\"SampleApp.App.ApplicationManager.RemoteApplication1.xsd\" />  
<xsd:include schemaLocation=\"SampleApp.App.ApplicationManager.RemoteApplication2.xsd\" />  
<xsd:include schemaLocation=\"SampleApp.App.ApplicationManager.RemoteApplication3.xsd\" />  
</xsd:schema>  
</wsdl:types>  
...  
</wsdl:definition>  
RemoteApplication0.xsd的内容如下:
<?xml version=\"1.0\" encoding=\"utf-8\"?>  
<xs:schema xmlns:tns=\"http://schemas.microsoft.com/Message\" 
elementFormDefault=\"qualified\"  
targetNamespace=\"http://schemas.microsoft.com/Message\"  
xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">  
<xs:complexType name=\"MessageBody\">  
<xs:sequence>  
<xs:any minOccurs=\"0\" maxOccurs=\"unbounded\" namespace=\"##any\" />  
</xs:sequence>  
</xs:complexType>  
</xs:schema>  
命令行:
wsdl2java -ss -g -d adb -or -p com.sampleapp.ws.generated.client -uri SampleRemoteProcess.wsdl  
生成过程导致异常。 堆栈跟踪:
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 \”的使用。 \“ include \”模式必须与包含所在的模式具有相同的目标名称空间(实际上是将同一名称空间拆分为多个文件)。您必须“导入”一个架构,才能使用另一个具有不同目标名称空间的架构文件。     
该错误消息具有很强的描述性:在另一个模式中以4开头的模式始终需要与导入模式具有相同的目标名称空间。在文件RemoteApplication0.xsd中,您必须将目标名称空间“ 5”更改为“ 6”。     

要回复问题请先登录注册