<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<!--
  ~ 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.
  -->

<definitions targetNamespace="http://serverPartial1.checkexception.webfault.annotations/" name="AddNumbersImplPartial1Service" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://serverPartial1.checkexception.webfault.annotations/" xmlns="http://schemas.xmlsoap.org/wsdl/">
  <types>
    <xsd:schema>
      <xsd:import namespace="http://serverPartial1.checkexception.webfault.annotations/" schemaLocation="PartialWSDL1_schema.xsd"/>
    </xsd:schema>
  </types>
  <message name="addTwoNumbers">
    <part name="parameters" element="tns:addTwoNumbers"/>
  </message>
  <message name="addTwoNumbersResponse">
    <part name="parameters" element="tns:addTwoNumbersResponse"/>
  </message>
  <message name="AddNegativeNumbersException">
    <part name="fault" element="tns:AddNegativeNumbersException"/>
  </message>
  <portType name="AddNumbersImplPartial1">
    <operation name="addTwoNumbers">
      <input message="tns:addTwoNumbers"/>
      <output message="tns:addTwoNumbersResponse"/>
      <fault name="AddNegativeNumbersException" message="tns:AddNegativeNumbersException"/>
    </operation>
  </portType>

<!--  Partial WSDL 1: No binding, service, or port information
    <binding name="AddNumbersImplPartial1PortBinding" type="tns:AddNumbersImplPartial1">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
    <operation name="addTwoNumbers">
      <soap:operation soapAction=""/>
      <input>
        <soap:body use="literal"/>
      </input>
      <output>
        <soap:body use="literal"/>
      </output>
      <fault name="AddNegativeNumbersException">
        <soap:fault name="AddNegativeNumbersException" use="literal"/>
      </fault>
    </operation>
  </binding>
  <service name="AddNumbersImplPartial1Service">
    <port name="AddNumbersImplPartial1Port" binding="tns:AddNumbersImplPartial1PortBinding">
      <soap:address location="http://@REPLACE_WITH_HOST_NAME@:@REPLACE_WITH_PORT_NUM@/webfaultchkexc/webfaultchkexcp1"/>
    </port>
  </service>
-->
  
</definitions>

