Я использую Axis2 1.5.1 (wsdl2java) для генерации кода (клиентские заглушки) из заданного файла WSDL.
Веб-сервис предоставляется внешним приложением.
<?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
Кажется, есть проблема с пространством имен, но я не знаю, как ее исправить.
Кто-нибудь может дать мне подсказку!