<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements. See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership. The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License. You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied. See the License for the
    specific language governing permissions and limitations
    under the License.
-->
<wsdl:definitions name="HelloWorldImplService" 
                  targetNamespace="http://cxf.examples.servicemix.apache.org/" 
                  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
                  xmlns:tns="http://cxf.examples.servicemix.apache.org/" 
                  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
                  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <wsdl:types>
        <xsd:schema attributeFormDefault="unqualified" 
                    elementFormDefault="unqualified" 
                    targetNamespace="http://cxf.examples.servicemix.apache.org/" 
                    xmlns:tns="http://cxf.examples.servicemix.apache.org/" 
                    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <xsd:element name="sayHi" type="tns:sayHi" />
            <xsd:complexType name="sayHi">
                <xsd:sequence>
                    <xsd:element minOccurs="0" name="arg0" type="xsd:string" />
                </xsd:sequence>
            </xsd:complexType>
            <xsd:element name="sayHiResponse" type="tns:sayHiResponse" />
            <xsd:complexType name="sayHiResponse">
                <xsd:sequence>
                    <xsd:element minOccurs="0" name="return" type="xsd:string" />
                </xsd:sequence>
            </xsd:complexType>
        </xsd:schema>
    </wsdl:types>
    <wsdl:message name="sayHiResponse">
        <wsdl:part element="tns:sayHiResponse" name="parameters">
        </wsdl:part>
    </wsdl:message>
    <wsdl:message name="sayHi">
        <wsdl:part element="tns:sayHi" name="parameters">
        </wsdl:part>
    </wsdl:message>
    <wsdl:portType name="HelloWorld">
        <wsdl:operation name="sayHi">
            <wsdl:input message="tns:sayHi" name="sayHi">
            </wsdl:input>
            <wsdl:output message="tns:sayHiResponse" name="sayHiResponse">
            </wsdl:output>
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="HelloWorldImplServiceSoapBinding" type="tns:HelloWorld">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
        <wsdl:operation name="sayHi">
            <soap:operation soapAction="" style="document" />
            <wsdl:input name="sayHi">
                <soap:body use="literal" />
            </wsdl:input>
            <wsdl:output name="sayHiResponse">
                <soap:body use="literal" />
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="HelloWorldImplService">
        <wsdl:port binding="tns:HelloWorldImplServiceSoapBinding" name="HelloWorldImplPort">
            <soap:address location="http://localhost:8181/cxf/HelloWorld" />
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>
