<?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.
  -->


<definitions name="AddNumbers" targetNamespace="http://org/test/addnumbers"
	xmlns:tns="http://org/test/addnumbers" xmlns="http://schemas.xmlsoap.org/wsdl/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">


	<types>
		<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
			elementFormDefault="qualified" targetNamespace="http://org/test/addnumbers">
			<element name="addNumbersResponse">
				<complexType>
					<sequence>
						<element name="return" type="xsd:int" />
					</sequence>
				</complexType>
			</element>

			<element name="addNumbers">
				<complexType>
					<sequence>
						<element name="arg0" type="xsd:int" />
						<element name="arg1" type="xsd:int" />
					</sequence>
				</complexType>
			</element>

			<element name="AddNumbersFault">
				<complexType>
					<sequence>
						<element name="faultInfo" type="xsd:string" />
						<element name="message" type="xsd:string" />
					</sequence>
				</complexType>
			</element>

			<element name="oneWayInt">
				<complexType>
					<sequence>
						<element name="arg0" type="xsd:int" />
					</sequence>
				</complexType>
			</element>

		</xsd:schema>
	</types>

	<message name="addNumbers">
		<part name="parameters" element="tns:addNumbers" />
	</message>
	<message name="addNumbersResponse">
		<part name="result" element="tns:addNumbersResponse" />
	</message>
	<message name="addNumbersFault">
		<part name="AddNumbersFault" element="tns:AddNumbersFault" />
	</message>
	<message name="oneWayInt">
		<part name="parameters" element="tns:oneWayInt" />
	</message>

	<portType name="AddNumbersPortType">
		<operation name="addNumbers">
			<input message="tns:addNumbers" name="add" />
			<output message="tns:addNumbersResponse" name="addResponse" />
			<fault name="addNumbersFault" message="tns:addNumbersFault" />
		</operation>
		<operation name="oneWayInt">
			<input message="tns:oneWayInt" />
		</operation>
	</portType>
	<binding name="AddNumbersBinding" type="tns:AddNumbersPortType">
		<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
			style="document" />
		<operation name="addNumbers">
			 
			<input>
				<soap:body use="literal" />
			</input>
			<output>
				<soap:body use="literal" />
			</output>
			<fault name="addNumbersFault">
				<soap:fault name="addNumbersFault" use="literal" />
			</fault>
		</operation>
		<operation name="oneWayInt">
			 
			<input>
				<soap:body use="literal" />
			</input>
		</operation>
	</binding>
	<service name="AddNumbersService">
		<port name="AddNumbersPort" binding="tns:AddNumbersBinding">
			<soap:address
				location="http://localhost:9080/AddNumber/AddNumbersImplService" />
		</port>
	</service>
</definitions>
