<?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.    
 -->
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" 
        name="interop.server">

    <import.sdo location="wsdl/interopdoc.wsdl"/>
    <!-- import.wsdl wsdlLocation="wsdl/interopdoc.wsdl"/ -->
		
    <service name="InteropDocService">
       <!-- interface.wsdl interface="http://soapinterop.org/#wsdl.interface(DocTestPortType)"/ -->
       <interface.java interface="org.soapinterop.DocTestPortType"/>
                
       <binding.ws endpoint="http://soapinterop.org/#wsdl.endpoint(interopDocSvc/interopDocPort)"
          conformanceURIs="http://ws-i.org/profiles/basic/1.1"
          location="wsdl/interopdoc.wsdl"
         />
        
        <reference>InteropDocServiceComponent/DocTestPortType</reference>
    </service>

    <component name="InteropDocServiceComponent">
        <implementation.java class="org.apache.tuscany.test.interop.server.InteropDocServiceComponentImpl"/>
    </component>
    
</composite>
