<?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.
-->
   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm" xmlns:wsa="http://www.w3.org/2005/08/addressing">
      <soapenv:Header>
         <wsa:MessageID soapenv:mustUnderstand="0">uuid:c3671020-15e0-11da-9b3a-f0439d4867bd</wsa:MessageID>
         <wsa:To soapenv:mustUnderstand="0">http://localhost:8070/axis/services/TestService</wsa:To>
         <wsa:Action soapenv:mustUnderstand="0">http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence</wsa:Action>
         <wsa:From soapenv:mustUnderstand="0">
            <wsa:Address>http://192.168.1.4:9090/axis/services/RMService</wsa:Address>
         </wsa:From>
         <wsa:ReplyTo soapenv:mustUnderstand="0">
            <wsa:Address>http://127.0.0.1:9090/axis/services/RMService</wsa:Address>
         </wsa:ReplyTo>
      </soapenv:Header>
      <soapenv:Body>
         <wsrm:CreateSequence>
            <wsrm:AcksTo>
               <wsa:Address>http://127.0.0.1:9090/axis/services/RMService</wsa:Address>
            </wsrm:AcksTo>
            <wsrm:Offer>
               <wsrm:Identifier>uuid:c3671020-15e0-11da-9b3b-f0439d4867bd</wsrm:Identifier>
            </wsrm:Offer>
         </wsrm:CreateSequence>
      </soapenv:Body>
   </soapenv:Envelope>
