web-serviceswsdlcxfwsdl2javacontract-first

CXF element reference


I'm trying run a contract-first by CXF and Maven.

I have a WSDL which is inside src/java/resource/wsdl and 5 xsds which are inside src/java/resources/xsd

My hierarchi seems like this:

aaa.v1r0.xsd (have an element which refers to bbb.v1r0.xsd)
bbb.v1r0.xsd (have elements which refers to ccc.v1r0.xsd, ddd.v1r0.xsd and eee.v1r0.xsd)
ccc.v1r0.xsd
ddd.v1r0.xsd (have an element which refers to eee.v1r0.xsd)
eee.v1r0.xsd
aaa.v1r0.wsdl have an element which refers to aaa.v1r0.xsd

aaa.v1r0.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
targetNamespace="http://schemas.example.com.br/aaa"
xmlns="http://schemas.example.com.br/aaa" 
version="v1r0"
xmlns:bbb="http://schemas.example.com.br/bbb">

<xsd:import 
    namespace="http://schemas.example.com.br/bbb" 
    schemaLocation="bbb.v1r0.xsd"/>


<xsd:element name="aaa" type="Aaa"/>

<xsd:element name="aaas" type="Aaas"/>

<xsd:complexType name="Aaa">
    <xsd:sequence>
        <xsd:element name="field1" type="xsd:string" minOccurs="1" maxOccurs="1"/>
        <xsd:element name="field2" type="xsd:string" minOccurs="1" maxOccurs="1"/>
        <xsd:element ref="bbb:bbbs" minOccurs="1" maxOccurs="1"/>
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="Aaas">
    <xsd:sequence>
        <xsd:element ref="aaa" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
</xsd:complexType>
</xsd:schema>

bbb.v1r0.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
targetNamespace="http://schemas.example.com.br/bbb"
xmlns="http://schemas.example.com.br/bbb" 
version="v1r0"
xmlns:ccc="http://schemas.example.com.br/ccc"
xmlns:ddd="http://schemas.example.com.br/ddd"
xmlns:eee="http://schemas.example.com.br/eee">

<xsd:import 
    namespace="http://schemas.example.com.br/ccc" 
    schemaLocation="ccc.v1r0.xsd"/>

<xsd:import 
    namespace="http://schemas.example.com.br/ddd" 
    schemaLocation="ddd.v1r0.xsd"/>

<xsd:import 
    namespace="http://schemas.example.com.br/eee"
    schemaLocation="eee.v1r0.xsd"/>

<xsd:element name="bbb" type="Bbb"/>

<xsd:element name="bbbs" type="Bbbs"/>

<xsd:complexType name="Bbb">
    <xsd:sequence>
        <xsd:element name="field1" type="xsd:dateTime" minOccurs="1" maxOccurs="1"/>
        <xsd:element name="field2" type="xsd:string" minOccurs="1" maxOccurs="1"/>
        <xsd:element name="field3" type="xsd:base64Binary" minOccurs="0" maxOccurs="1"/>
        <xsd:element ref="ccc:ccc" minOccurs="1" maxOccurs="1"/>
        <xsd:element name="field4" type="xsd:integer" minOccurs="0" maxOccurs="1"/>
        <xsd:element name="field5" type="xsd:string" minOccurs="0" maxOccurs="1"/>
        <xsd:element ref="ddd:ddd" minOccurs="1" maxOccurs="1"/>
        <xsd:element name="field6" minOccurs="0" maxOccurs="1">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element ref="eee:eees" minOccurs="1" maxOccurs="1"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="Bbbs">
    <xsd:sequence>
        <xsd:element ref="bbb" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
</xsd:complexType>
</xsd:schema>

ccc.v1r0.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://schemas.example.com.br/ccc"
xmlns="http://schemas.example.com.br/ccc"
version="v1r0">

<xsd:element name="ccc" type="Ccc"/>

<xsd:complexType name="Ccc">
    <xsd:sequence>
        <xsd:element name="field1" type="xsd:string" minOccurs="1" maxOccurs="1"/>
        <xsd:element name="field2" type="xsd:string" minOccurs="1" maxOccurs="1"/>
        <xsd:element name="field3" minOccurs="0" maxOccurs="1">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="field1" type="xsd:double" minOccurs="1" maxOccurs="1"/>
                    <xsd:element name="field2" type="xsd:double" minOccurs="1" maxOccurs="1"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>
    </xsd:sequence>
</xsd:complexType>
</xsd:schema>

ddd.v1r0.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
targetNamespace="http://schemas.example.com.br/ddd"
xmlns="http://schemas.example.com.br/ddd" 
version="v1r0"
xmlns:eee="http://schemas.example.com.br/eee">

<xsd:import 
    namespace="http://schemas.example.com.br/eee" 
    schemaLocation="eee.v1r0.xsd"/>

<xsd:element name="ddd" type="Ddd"/>

<xsd:element name="ddds" type="Ddds"/>

<xsd:complexType name="Ddd">
    <xsd:sequence>
        <xsd:element name="field1" type="xsd:string" minOccurs="1" maxOccurs="1"/>
        <xsd:element name="field2" type="xsd:time" minOccurs="0" maxOccurs="1"/>
        <xsd:element ref="eee:eees" minOccurs="0" maxOccurs="1"/>
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="Ddds">
    <xsd:sequence>
        <xsd:element ref="ddd" minOccurs="1" maxOccurs="1"/>
    </xsd:sequence>
</xsd:complexType>
</xsd:schema>

eee.v1r0.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://schemas.example.com.br/eee"
xmlns="http://schemas.example.com.br/eee"
version="v1r0">

<xsd:element name="eee" type="Eee"/>

<xsd:element name="eees" type="Eees"/>

<xsd:complexType name="Eee">
    <xsd:sequence>
        <xsd:element name="field1" type="xsd:string" minOccurs="1" maxOccurs="1"/>
        <xsd:element name="field2" type="xsd:string" minOccurs="0" maxOccurs="1"/>
        <xsd:element name="field3" type="xsd:string" minOccurs="1" maxOccurs="1"/>
        <xsd:element name="field4" type="xsd:integer" minOccurs="0" maxOccurs="1"/>
        <xsd:element name="field5" minOccurs="0" maxOccurs="1">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="field1" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="Eees">
    <xsd:sequence>
        <xsd:element ref="eee" minOccurs="1" maxOccurs="unbounded"/>
    </xsd:sequence>
</xsd:complexType>
</xsd:schema>

aaa.v1r0.wsdl

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions 
name="evento.v1r0"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
targetNamespace="http://services.example.com.br/aaa"
xmlns:tns="http://services.example.com.br/aaa">

<wsdl:types>
    <xsd:schema
        elementFormDefault="qualified"
        targetNamespace="http://services.example.com.br/aaa"
        xmlns:aaa="http://schemas.example.com.br/aaa">

        <xsd:import 
            namespace="http://schemas.example.com.br/aaa"
            schemaLocation="../xsd/aaa.v1r0.xsd"/>

        <xsd:element name="capacity01Request">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element ref="aaa:aaa" minOccurs="1" maxOccurs="1"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>

        <xsd:element name="capacity01Response">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="field1" type="xsd:integer" minOccurs="1" maxOccurs="1"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>

        <xsd:element name="capacity02Request">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="field1" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                    <xsd:element name="field2" type="xsd:date" minOccurs="0" maxOccurs="1"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>

        <xsd:element name="capacity02Response">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="field01" minOccurs="0" maxOccurs="1">
                        <xsd:complexType>
                            <xsd:sequence>
                                <xsd:element name="field02" minOccurs="1" maxOccurs="unbounded">
                                    <xsd:complexType>
                                        <xsd:sequence>
                                            <xsd:element name="field03" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                            <xsd:element name="field04" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                            <xsd:element name="field05" minOccurs="1" maxOccurs="1">
                                                <xsd:complexType>
                                                    <xsd:sequence>
                                                        <xsd:element name="field06" minOccurs="1" maxOccurs="unbounded">
                                                            <xsd:complexType>
                                                                <xsd:sequence>
                                                                    <xsd:element name="field07" type="xsd:dateTime" minOccurs="1" maxOccurs="1"/>
                                                                    <xsd:element name="field08" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                                                    <xsd:element name="field09" type="xsd:base64Binary" minOccurs="0" maxOccurs="1"/>
                                                                    <xsd:element name="field10" minOccurs="1" maxOccurs="1">
                                                                        <xsd:complexType>
                                                                            <xsd:sequence>
                                                                                <xsd:element name="field11" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                                                                <xsd:element name="field12" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                                                            </xsd:sequence>
                                                                        </xsd:complexType>
                                                                    </xsd:element>
                                                                    <xsd:element name="field13" type="xsd:integer" minOccurs="0" maxOccurs="1"/>
                                                                </xsd:sequence>
                                                            </xsd:complexType>
                                                        </xsd:element>
                                                    </xsd:sequence>
                                                </xsd:complexType>
                                            </xsd:element>
                                        </xsd:sequence>
                                    </xsd:complexType>
                                </xsd:element>
                            </xsd:sequence>
                        </xsd:complexType>
                    </xsd:element>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>

        <xsd:element name="capacity03Request">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="field01" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                    <xsd:element name="field02" type="xsd:date" minOccurs="0" maxOccurs="1"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>

        <xsd:element name="capacity03Response">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element ref="aaa:aaas" minOccurs="0" maxOccurs="1"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>

        <xsd:element name="capacity04Request">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="field01" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                    <xsd:element name="field02" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                    <xsd:element name="field03" minOccurs="0" maxOccurs="1">
                        <xsd:complexType>
                            <xsd:sequence>
                                <xsd:element name="field04" type="xsd:date" minOccurs="0" maxOccurs="1"/>
                                <xsd:element name="field05" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                            </xsd:sequence>
                        </xsd:complexType>
                    </xsd:element>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>

        <xsd:element name="capacity04Response">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element ref="aaa:aaas" minOccurs="0" maxOccurs="1"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>

        <xsd:element name="AaaError">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="field01" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>
    </xsd:schema>
</wsdl:types>

<wsdl:message name="requestcapacity01">
    <wsdl:part name="capacity01Request" element="tns:capacity01Request"/>
</wsdl:message>

<wsdl:message name="responsecapacity01">
    <wsdl:part name="capacity01Response" element="tns:capacity01Response"/>
</wsdl:message>

<wsdl:message name="requestcapacity02">
    <wsdl:part name="capacity02Request" element="tns:capacity02Request"/>
</wsdl:message>

<wsdl:message name="responsecapacity02">
    <wsdl:part name="capacity02Response" element="tns:capacity02Response"/>
</wsdl:message>

<wsdl:message name="requestcapacity03">
    <wsdl:part name="capacity03Request" element="tns:capacity03Request"/>
</wsdl:message>

<wsdl:message name="responsecapacity03">
    <wsdl:part name="capacity03Response" element="tns:capacity03Response"/>
</wsdl:message>

<wsdl:message name="requestcapacity04">
    <wsdl:part name="capacity04Request" element="tns:capacity04Request"/>
</wsdl:message>

<wsdl:message name="responsecapacity04">
    <wsdl:part name="capacity04Response" element="tns:capacity04Response"/>
</wsdl:message>

<wsdl:message name="AaaError">
    <wsdl:part name="AaaError" element="tns:AaaError"/>
</wsdl:message>

<wsdl:portType name="eventoPortType">
    <wsdl:operation name="capacity01">
        <wsdl:input message="tns:requestcapacity01"/>
        <wsdl:output message="tns:responsecapacity01"/>
        <wsdl:fault name="error" message="tns:AaaError"/>
    </wsdl:operation>

    <wsdl:operation name="capacity02">
        <wsdl:input message="tns:requestcapacity02"/>
        <wsdl:output message="tns:responsecapacity02"/>
        <wsdl:fault name="error" message="tns:AaaError"/>
    </wsdl:operation>

    <wsdl:operation name="capacity03">
        <wsdl:input message="tns:requestcapacity03"/>
        <wsdl:output message="tns:responsecapacity03"/>
        <wsdl:fault name="error" message="tns:AaaError"/>
    </wsdl:operation>

    <wsdl:operation name="capacity04">
        <wsdl:input message="tns:requestcapacity04"/>
        <wsdl:output message="tns:responsecapacity04"/>
        <wsdl:fault name="error" message="tns:AaaError"/>
    </wsdl:operation>
</wsdl:portType>

<wsdl:binding name="eventoSOAP11Binding" type="tns:eventoPortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

    <wsdl:operation name="capacity01">
        <soap:operation style="document" soapAction="" />
        <wsdl:input>
            <soap:body use="literal" />
        </wsdl:input>
        <wsdl:output>
            <soap:body use="literal" />
        </wsdl:output>
        <wsdl:fault name="error">
            <soap:fault name="error" use="literal" />
        </wsdl:fault>
    </wsdl:operation>

    <wsdl:operation name="capacity02">
        <soap:operation style="document" soapAction=""/>
        <wsdl:input>
            <soap:body use="literal" />
        </wsdl:input>
        <wsdl:output>
            <soap:body use="literal" />
        </wsdl:output>
        <wsdl:fault name="error">
            <soap:fault name="error" use="literal" />
        </wsdl:fault>
    </wsdl:operation>

    <wsdl:operation name="capacity03">
        <soap:operation style="document" soapAction=""/>
        <wsdl:input>
            <soap:body use="literal" />
        </wsdl:input>
        <wsdl:output>
            <soap:body use="literal" />
        </wsdl:output>
        <wsdl:fault name="error">
            <soap:fault name="error" use="literal" />
        </wsdl:fault>
    </wsdl:operation>

    <wsdl:operation name="capacity04">
        <soap:operation style="document" soapAction=""/>
        <wsdl:input>
            <soap:body use="literal" />
        </wsdl:input>
        <wsdl:output>
            <soap:body use="literal" />
        </wsdl:output>
        <wsdl:fault name="error">
            <soap:fault name="error" use="literal" />
        </wsdl:fault>
    </wsdl:operation>
</wsdl:binding>

<wsdl:service name="aaaService">
    <wsdl:port name="AaaPort" binding="tns:eventoSOAP11Binding">
        <soap:address location="http://localhost:8080/aaa-service/services/aaa"/>
    </wsdl:port>
</wsdl:service>
</wsdl:definitions>

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.exampleapp</groupId>
<artifactId>aaa-service</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>aaa-service Maven Webapp</name>
<url>http://maven.apache.org</url>

<properties>
    <cxf.version>3.0.1</cxf.version>
    <jdk.version>1.7</jdk.version>
    <maven-compiler.version>3.1</maven-compiler.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <spring.version>4.0.6.RELEASE</spring.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>${cxf.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
</dependencies>

<build>
    <finalName>aaa-service</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven-compiler.version}</version>
            <configuration>
                <source>${jdk.version}</source>
                <target>${jdk.version}</target>
                <encoding></encoding>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>${cxf.version}</version>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <configuration>
                        <sourceRoot>${basedir}/src/main/java</sourceRoot>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>${basedir}/src/main/resources/wsdl/aaa.v1r0.wsdl</wsdl>
                                <extraargs>
                                    <extraarg>-impl</extraarg>
                                </extraargs>
                            </wsdlOption>
                        </wsdlOptions>
                    </configuration>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
</project>

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:jaxws="http://cxf.apache.org/jaxws"
  xsi:schemaLocation="
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd
     http://cxf.apache.org/jaxws
     http://cxf.apache.org/schemas/jaxws.xsd">

<jaxws:endpoint 
    id="aaa"
    implementor="br.com.example.services.aaa.AaaPortImpl"
    wsdlLocation="wsdl/aaa.v1r0.wsdl"
    address="/aaa">
</jaxws:endpoint>
</beans>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee  /web-app_2_5.xsd">
<display-name>Sample web service provider</display-name>
<listener>
    <listener-class>
         org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>WEB-INF/applicationContext.xml</param-value>
</context-param>
<servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
</servlet-mapping>
<session-config>
    <session-timeout>60</session-timeout>
</session-config>
</web-app>

When I run my project in a Tomcat server, I can access the WSDL configuration through http://localhost:8080/aaa-service/services/aaa?wsdl

However, when I try test this configuration through SOAPUI, I receive a message which say that was an error loading WSDL

Source null

Error element bbbs@http://schemas.example.com.br/bbb not found

What am I doing wrong? is there some configuration to ref elements?


Solution

  • Add the import statement to import other xsd to wsdl

    <xsd:import namespace="http://schemas.example.com.br/bbb" schemaLocation="../xsd/bbb.v1r0.xsd" />
                <xsd:import namespace="http://schemas.example.com.br/ccc" schemaLocation="../xsd/ccc.v1r0.xsd" />
                <xsd:import namespace="http://schemas.example.com.br/ddd" schemaLocation="../xsd/ddd.v1r0.xsd" />
                <xsd:import namespace="http://schemas.example.com.br/eee" schemaLocation="../xsd/eee.v1r0.xsd" />
    

    Your wsdl would look like as below

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <wsdl:definitions name="evento.v1r0" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="http://services.example.com.br/aaa" xmlns:tns="http://services.example.com.br/aaa">
    
        <wsdl:types>
            <xsd:schema elementFormDefault="qualified" targetNamespace="http://services.example.com.br/aaa" xmlns:aaa="http://schemas.example.com.br/aaa">
    
                <xsd:import namespace="http://schemas.example.com.br/aaa" schemaLocation="../xsd/aaa.v1r0.xsd" />
                <xsd:import namespace="http://schemas.example.com.br/bbb" schemaLocation="../xsd/bbb.v1r0.xsd" />
                <xsd:import namespace="http://schemas.example.com.br/ccc" schemaLocation="../xsd/ccc.v1r0.xsd" />
                <xsd:import namespace="http://schemas.example.com.br/ddd" schemaLocation="../xsd/ddd.v1r0.xsd" />
                <xsd:import namespace="http://schemas.example.com.br/eee" schemaLocation="../xsd/eee.v1r0.xsd" />
    
                <xsd:element name="capacity01Request">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element ref="aaa:aaa" minOccurs="1" maxOccurs="1" />
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
    
                <xsd:element name="capacity01Response">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="field1" type="xsd:integer" minOccurs="1" maxOccurs="1" />
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
    
                <xsd:element name="capacity02Request">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="field1" type="xsd:string" minOccurs="0" maxOccurs="1" />
                            <xsd:element name="field2" type="xsd:date" minOccurs="0" maxOccurs="1" />
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
    
                <xsd:element name="capacity02Response">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="field01" minOccurs="0" maxOccurs="1">
                                <xsd:complexType>
                                    <xsd:sequence>
                                        <xsd:element name="field02" minOccurs="1" maxOccurs="unbounded">
                                            <xsd:complexType>
                                                <xsd:sequence>
                                                    <xsd:element name="field03" type="xsd:string" minOccurs="1" maxOccurs="1" />
                                                    <xsd:element name="field04" type="xsd:string" minOccurs="1" maxOccurs="1" />
                                                    <xsd:element name="field05" minOccurs="1" maxOccurs="1">
                                                        <xsd:complexType>
                                                            <xsd:sequence>
                                                                <xsd:element name="field06" minOccurs="1" maxOccurs="unbounded">
                                                                    <xsd:complexType>
                                                                        <xsd:sequence>
                                                                            <xsd:element name="field07" type="xsd:dateTime" minOccurs="1" maxOccurs="1" />
                                                                            <xsd:element name="field08" type="xsd:string" minOccurs="1" maxOccurs="1" />
                                                                            <xsd:element name="field09" type="xsd:base64Binary" minOccurs="0" maxOccurs="1" />
                                                                            <xsd:element name="field10" minOccurs="1" maxOccurs="1">
                                                                                <xsd:complexType>
                                                                                    <xsd:sequence>
                                                                                        <xsd:element name="field11" type="xsd:string" minOccurs="1" maxOccurs="1" />
                                                                                        <xsd:element name="field12" type="xsd:string" minOccurs="1" maxOccurs="1" />
                                                                                    </xsd:sequence>
                                                                                </xsd:complexType>
                                                                            </xsd:element>
                                                                            <xsd:element name="field13" type="xsd:integer" minOccurs="0" maxOccurs="1" />
                                                                        </xsd:sequence>
                                                                    </xsd:complexType>
                                                                </xsd:element>
                                                            </xsd:sequence>
                                                        </xsd:complexType>
                                                    </xsd:element>
                                                </xsd:sequence>
                                            </xsd:complexType>
                                        </xsd:element>
                                    </xsd:sequence>
                                </xsd:complexType>
                            </xsd:element>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
    
                <xsd:element name="capacity03Request">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="field01" type="xsd:string" minOccurs="0" maxOccurs="1" />
                            <xsd:element name="field02" type="xsd:date" minOccurs="0" maxOccurs="1" />
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
    
                <xsd:element name="capacity03Response">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element ref="aaa:aaas" minOccurs="0" maxOccurs="1" />
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
    
                <xsd:element name="capacity04Request">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="field01" type="xsd:string" minOccurs="1" maxOccurs="1" />
                            <xsd:element name="field02" type="xsd:string" minOccurs="0" maxOccurs="1" />
                            <xsd:element name="field03" minOccurs="0" maxOccurs="1">
                                <xsd:complexType>
                                    <xsd:sequence>
                                        <xsd:element name="field04" type="xsd:date" minOccurs="0" maxOccurs="1" />
                                        <xsd:element name="field05" type="xsd:string" minOccurs="0" maxOccurs="1" />
                                    </xsd:sequence>
                                </xsd:complexType>
                            </xsd:element>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
    
                <xsd:element name="capacity04Response">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element ref="aaa:aaas" minOccurs="0" maxOccurs="1" />
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
    
                <xsd:element name="AaaError">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="field01" type="xsd:string" minOccurs="1" maxOccurs="1" />
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
            </xsd:schema>
        </wsdl:types>
    
        <wsdl:message name="requestcapacity01">
            <wsdl:part name="capacity01Request" element="tns:capacity01Request" />
        </wsdl:message>
    
        <wsdl:message name="responsecapacity01">
            <wsdl:part name="capacity01Response" element="tns:capacity01Response" />
        </wsdl:message>
    
        <wsdl:message name="requestcapacity02">
            <wsdl:part name="capacity02Request" element="tns:capacity02Request" />
        </wsdl:message>
    
        <wsdl:message name="responsecapacity02">
            <wsdl:part name="capacity02Response" element="tns:capacity02Response" />
        </wsdl:message>
    
        <wsdl:message name="requestcapacity03">
            <wsdl:part name="capacity03Request" element="tns:capacity03Request" />
        </wsdl:message>
    
        <wsdl:message name="responsecapacity03">
            <wsdl:part name="capacity03Response" element="tns:capacity03Response" />
        </wsdl:message>
    
        <wsdl:message name="requestcapacity04">
            <wsdl:part name="capacity04Request" element="tns:capacity04Request" />
        </wsdl:message>
    
        <wsdl:message name="responsecapacity04">
            <wsdl:part name="capacity04Response" element="tns:capacity04Response" />
        </wsdl:message>
    
        <wsdl:message name="AaaError">
            <wsdl:part name="AaaError" element="tns:AaaError" />
        </wsdl:message>
    
        <wsdl:portType name="eventoPortType">
            <wsdl:operation name="capacity01">
                <wsdl:input message="tns:requestcapacity01" />
                <wsdl:output message="tns:responsecapacity01" />
                <wsdl:fault name="error" message="tns:AaaError" />
            </wsdl:operation>
    
            <wsdl:operation name="capacity02">
                <wsdl:input message="tns:requestcapacity02" />
                <wsdl:output message="tns:responsecapacity02" />
                <wsdl:fault name="error" message="tns:AaaError" />
            </wsdl:operation>
    
            <wsdl:operation name="capacity03">
                <wsdl:input message="tns:requestcapacity03" />
                <wsdl:output message="tns:responsecapacity03" />
                <wsdl:fault name="error" message="tns:AaaError" />
            </wsdl:operation>
    
            <wsdl:operation name="capacity04">
                <wsdl:input message="tns:requestcapacity04" />
                <wsdl:output message="tns:responsecapacity04" />
                <wsdl:fault name="error" message="tns:AaaError" />
            </wsdl:operation>
        </wsdl:portType>
    
        <wsdl:binding name="eventoSOAP11Binding" type="tns:eventoPortType">
            <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
    
            <wsdl:operation name="capacity01">
                <soap:operation style="document" soapAction="" />
                <wsdl:input>
                    <soap:body use="literal" />
                </wsdl:input>
                <wsdl:output>
                    <soap:body use="literal" />
                </wsdl:output>
                <wsdl:fault name="error">
                    <soap:fault name="error" use="literal" />
                </wsdl:fault>
            </wsdl:operation>
    
            <wsdl:operation name="capacity02">
                <soap:operation style="document" soapAction="" />
                <wsdl:input>
                    <soap:body use="literal" />
                </wsdl:input>
                <wsdl:output>
                    <soap:body use="literal" />
                </wsdl:output>
                <wsdl:fault name="error">
                    <soap:fault name="error" use="literal" />
                </wsdl:fault>
            </wsdl:operation>
    
            <wsdl:operation name="capacity03">
                <soap:operation style="document" soapAction="" />
                <wsdl:input>
                    <soap:body use="literal" />
                </wsdl:input>
                <wsdl:output>
                    <soap:body use="literal" />
                </wsdl:output>
                <wsdl:fault name="error">
                    <soap:fault name="error" use="literal" />
                </wsdl:fault>
            </wsdl:operation>
    
            <wsdl:operation name="capacity04">
                <soap:operation style="document" soapAction="" />
                <wsdl:input>
                    <soap:body use="literal" />
                </wsdl:input>
                <wsdl:output>
                    <soap:body use="literal" />
                </wsdl:output>
                <wsdl:fault name="error">
                    <soap:fault name="error" use="literal" />
                </wsdl:fault>
            </wsdl:operation>
        </wsdl:binding>
    
        <wsdl:service name="aaaService">
            <wsdl:port name="AaaPort" binding="tns:eventoSOAP11Binding">
                <soap:address location="http://localhost:8080/aaa-service/services/aaa" />
            </wsdl:port>
        </wsdl:service>
    </wsdl:definitions>