<!--
  ~ 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.
  -->

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Header> 
			<ns1:myHeader xmlns:ns1="http://org/test/addnumbershandler">Good1</ns1:myHeader>
			<ns1:myHeader xmlns:ns1="http://org/test/addnumbershandler" soap:actor="http://schemas.xmlsoap.org/soap/actor/next">Good2</ns1:myHeader>
			<ns1:myHeader xmlns:ns1="http://org/test/addnumbershandler" soap:actor="http://badActor">Bad</ns1:myHeader>
		</soap:Header>
 		<soap:Body> 
			<ns2:addNumbersHandler xmlns:ns2="http://org/test/addnumbershandler">
			<ns2:arg0>10</ns2:arg0>
			<ns2:arg1>10</ns2:arg1>
			</ns2:addNumbersHandler>
		</soap:Body>
	</soap:Envelope>