<?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="GetTokenImplService" targetNamespace="http://camel.apache.org/cxf/namespace" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://camel.apache.org/cxf/namespace" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <wsdl:types>
    <xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://camel.apache.org/cxf/namespace" xmlns="http://camel.apache.org/cxf/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <xs:complexType name="getToken">
        <xs:sequence>
          <xs:element minOccurs="0" name="arg0"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="getTokenResponse">
        <xs:sequence>
          <xs:element minOccurs="0" name="return"/>
        </xs:sequence>
      </xs:complexType>
      <xs:element name="getToken" nillable="true" type="getToken"/>
      <xs:element name="getTokenResponse" nillable="true" type="getTokenResponse"/>
    </xs:schema>
  </wsdl:types>
  <wsdl:message name="getToken">
    <wsdl:part element="tns:getToken" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getTokenResponse">
    <wsdl:part element="tns:getTokenResponse" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:portType name="GetToken">
    <wsdl:operation name="getToken">
      <wsdl:input message="tns:getToken" name="getToken">
      </wsdl:input>
      <wsdl:output message="tns:getTokenResponse" name="getTokenResponse">
      </wsdl:output>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="GetTokenServiceSoapBinding" type="tns:GetToken">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="getToken">
      <soap:operation soapAction="" style="document"/>
      <wsdl:input name="getToken">
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output name="getTokenResponse">
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="GetTokenService">
    <wsdl:port binding="tns:GetTokenServiceSoapBinding" name="GetTokenPort">
      <soap:address location="http://localhost:9191/GetToken"/>
      <wswa:UsingAddressing xmlns:wswa="http://www.w3.org/2005/02/addressing/wsdl"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>
