<?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.
    ***************************************************************
   -->
<analysisEngineDeploymentDescription
  xmlns="http://uima.apache.org/resourceSpecifier">
  
  
  <deployment protocol="jms" provider="activemq">
 
      <service>
        <custom name="run_top_level_CPP_service_as_separate_process"/>
        <inputQueue endpoint="MeetingDetectorTaeQueue"
          brokerURL="tcp://tcp.main.input.queue.localhost:61616"/>
        <topDescriptor>         
          <import location="cppDescr.xml"/>
        </topDescriptor>
        
        <environmentVariables></environmentVariables>
        
      </service>

  </deployment>
  
</analysisEngineDeploymentDescription>