uima-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sc...@apache.org
Subject svn commit: r702261 [1/4] - in /incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src: main/scripts/ test/java/org/apache/uima/as/dd/ test/resources/deploy/ test/resources/deploy/expected/ test/resources/descriptors/analysis_engine/ test/resources/des...
Date Mon, 06 Oct 2008 21:01:49 GMT
Author: schor
Date: Mon Oct  6 14:01:48 2008
New Revision: 702261

URL: http://svn.apache.org/viewvc?rev=702261&view=rev
Log:
[UIMA-1140] change dd2spring to use internal java queues - no longer generate beans for active mq for this.  Fix up msg handler chains to have the right ones in the chains.  Add threading instances for internal java queues to delegate endpoints.

Added:
    incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/main/scripts/runRemoteAsyncAEmultiple.cmd
    incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/deploy/Deploy_AggregateUsingRemoteTempQueue.xml
    incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/deploy/expected/Deploy_AggregateUsingRemoteTempQueue.xml
    incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/deploy/expected/vmBkrBad.xml
    incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/deploy/vmBkrBad.xml
    incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/descriptors/analysis_engine/SimpleTestAggregate.xml
    incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/descriptors/multiplier/
    incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/descriptors/multiplier/SimpleCasGenerator.xml
Modified:
    incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/main/scripts/dd2spring.xsl
    incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/java/org/apache/uima/as/dd/Dd2SpringTest.java
    incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/deploy/expected/Deploy_MeetingFinder.xml
    incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/deploy/expected/aggrRmtConcurrentReply.xml
    incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/deploy/expected/defaultingAEaggrAsync.xml
    incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/deploy/expected/defaultingPrimAEMultInstance.xml
    incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/deploy/expected/iq2AE.xml
    incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/deploy/expected/iq2AEg.xml
    incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/deploy/expected/iq2AEg2.xml
    incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/deploy/expected/iq3.xml
    incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/deploy/expected/tempQ1.xml

Modified: incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/main/scripts/dd2spring.xsl
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/main/scripts/dd2spring.xsl?rev=702261&r1=702260&r2=702261&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/main/scripts/dd2spring.xsl (original)
+++ incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/main/scripts/dd2spring.xsl Mon Oct  6 14:01:48 2008
@@ -219,6 +219,7 @@
   <!--           Top level match                                  -->       
   <!--============================================================--> 
   <xsl:template match="u:analysisEngineDeploymentDescription">
+    <!--xsl:message select="'debugging - verify version'"/-->
     <xsl:sequence select="f:generateBlockComment(
       ('Generated from', $document-uri, format-dateTime(current-dateTime(), '[D1] [MNn], [Y], [h]:[m]:[s] [PN]')), 1)"/>
     <xsl:apply-templates select="$ddd/u:analysisEngineDeploymentDescription/u:deployment"/> 
@@ -326,9 +327,8 @@
       </xsl:choose>
     </xsl:variable>
     
-    
     <!--xsl:message select="concat('Flow controller for ', $aeNameUnique, ' is ', $flowControllerPath)"/-->
-    
+    <!-- removed lazy init: lazy-init="{if (parent::u:service) then 'true' else 'false'}" -->
     <bean id="{$ctlrID}"
       class="org.apache.uima.aae.controller.AggregateAnalysisEngineController_impl"
       init-method="initialize">
@@ -348,23 +348,37 @@
       <constructor-arg index="4" ref="inProcessCache"/>
       <constructor-arg index="5" ref="{$delegateMapID}"/>
       
-      <property name="outputChannel" ref="{f:getOutputChannelID(.)}"/>
+      <!-- output channels needed if top level component - to return values to invoker
+           or if one or more delegates is remote - to send to the remote -->
+      <xsl:if test="parent::u:service or u:delegates/u:remoteAnalysisEngine">
+        <property name="outputChannel" ref="{f:getOutputChannelID(.)}"/>
+      </xsl:if>  
       <property name="serviceEndpointName" value="{$input_q_ID}"/>
       
       <property name="controllerBeanName" value="{$ctlrID}"/>
       <property name="errorHandlerChain" ref="{f:getErrorHandlerChainID(.)}"/>
       <property name="flowControllerDescriptor" value="{$flowControllerPath}"/>
     </bean>
+  
+    <!-- only generate aggregate input message handlers for top level - 
+         others using internal queuing mechanisms -->
+    <xsl:if test="parent::u:service">  
+      <xsl:call-template name="generateMsgHandlerChain">
+        <xsl:with-param name="aeNode" select="."/>
+        <xsl:with-param name="kind" select="'aggregate_input'"/>
+      </xsl:call-template>
+    </xsl:if>
     
-    <xsl:call-template name="generateMsgHandlerChain">
-      <xsl:with-param name="aeNode" select="."/>
-      <xsl:with-param name="kind" select="'aggregate_input'"/>
-    </xsl:call-template>
+    <!-- only generate return message handlers if one or more of the 
+         delegates are remote 
+         All remotes share this one message handler chain -->
     
-    <xsl:call-template name="generateMsgHandlerChain">
-      <xsl:with-param name="aeNode" select="."/>
-      <xsl:with-param name="kind" select="'aggregate_return'"/>
-    </xsl:call-template>
+    <xsl:if test="u:delegates/u:remoteAnalysisEngine">
+      <xsl:call-template name="generateMsgHandlerChain">
+        <xsl:with-param name="aeNode" select="."/>
+        <xsl:with-param name="kind" select="'aggregate_return'"/>
+      </xsl:call-template>
+    </xsl:if>
     
     <xsl:sequence
       select="f:generateLineComment('Create the endpoints + output channels, one per delegate', 3)"/>
@@ -465,6 +479,19 @@
         <xsl:if test="$remoteAnalysisEngine">
           <property name="tempReplyDestination" value="true"/>
         </xsl:if>
+        
+        <xsl:if test="not($remoteAnalysisEngine)">
+          <xsl:choose>
+            <xsl:when test="$aeDelegate[@async eq 'true']">
+              <property name="concurrentRequestConsumers" value="{$aeDelegate/@inputQueueScaleout}"/>    
+            </xsl:when>
+            <xsl:otherwise>
+              <property name="concurrentRequestConsumers" value="{$aeDelegate/u:scaleout/@numberOfInstances}"/>
+            </xsl:otherwise>
+          </xsl:choose> 
+          
+          <property name="concurrentReplyConsumers" value="{$aeDelegate/@internalReplyQueueScaleout}"/>
+        </xsl:if>
         <!--
           <xsl:variable name="msgListenerContainerID" 
              select="concat('asAggr_return_msgLsnrCntnr_', $aeNameUnique,
@@ -476,20 +503,24 @@
      
     </xsl:for-each>
          
-    <xsl:call-template name="generateInputChannel">
-      <xsl:with-param name="aeNameUnique" select="$aeNameUnique"/>
-      <xsl:with-param name="q_ID" select="$input_q_ID"/>
-      <xsl:with-param name="q_endpointName" select="$input_q_ID"/>
-      <xsl:with-param name="queueFactoryID" select="$inputQueueFactoryID"/>
-      <xsl:with-param name="inputOrReturn" select="'input'"/>
-      <xsl:with-param name="kind" select="'asAggr'"/>
-      <!-- used as 1st part of ctlr name -->
-      <xsl:with-param name="msgHandlerChainID"
-        select="f:getMetaMsgHandlerID(., 'aggregate_input')"/>
-      <xsl:with-param name="nbrConcurrentConsumers" select="string(@inputQueueScaleout)"/>
-      <xsl:with-param name="remote" select="()"/>
-      <xsl:with-param name="poolingTaskExecutor" select="()"/>
-    </xsl:call-template>
+    <!-- only generate input channels (and listeners) for top level - 
+         others using internal queuing mechanisms -->
+    <xsl:if test="parent::u:service"> 
+      <xsl:call-template name="generateInputChannel">
+        <xsl:with-param name="aeNameUnique" select="$aeNameUnique"/>
+        <xsl:with-param name="q_ID" select="$input_q_ID"/>
+        <xsl:with-param name="q_endpointName" select="$input_q_ID"/>
+        <xsl:with-param name="queueFactoryID" select="$inputQueueFactoryID"/>
+        <xsl:with-param name="inputOrReturn" select="'input'"/>
+        <xsl:with-param name="kind" select="'asAggr'"/>
+        <!-- used as 1st part of ctlr name -->
+        <xsl:with-param name="msgHandlerChainID"
+          select="f:getMetaMsgHandlerID(., 'aggregate_input')"/>
+        <xsl:with-param name="nbrConcurrentConsumers" select="string(@inputQueueScaleout)"/>
+        <xsl:with-param name="remote" select="()"/>
+        <xsl:with-param name="poolingTaskExecutor" select="()"/>
+      </xsl:call-template>
+    </xsl:if>
     
     <xsl:variable name="return_q_ID" select="f:getLocalReturnQueueEndpointID(.)"/>
     
@@ -497,31 +528,34 @@
       the test "starts-with(@brokerURL, '/')" would seem always to be false 
       The net effect is that the return queue for async aggr is always generated -->
     
-    <xsl:if
-      test="u:delegates/u:analysisEngine or
-                  u:delegates/u:remoteAnalysisEngine/u:inputQueue[not(starts-with(@brokerURL, '/'))]">
-      
-      <xsl:sequence
+    <!-- test changed: no common return input channel and listeners are used
+         anymore - they were used only for co-located delegates, which now
+         use an internal mechanism -->
+    
+    
+      <!-- removed with change to JavaQ for local Q -->
+      <!-- other reply queues (for remotes) are "remote" -->     
+      <!--xsl:sequence
         select="f:generateLineComment('return queue for async aggregate', 3)"/>
       <bean id="{$return_q_ID}" class="org.apache.activemq.command.ActiveMQQueue">
         <constructor-arg index="0" value="{$return_q_ID}"/>
-      </bean>
+      </bean-->
       
-      <xsl:call-template name="generateInputChannel">
+      <!--xsl:call-template name="generateInputChannel">
         <xsl:with-param name="aeNameUnique" select="$aeNameUnique"/>
         <xsl:with-param name="q_ID" select="$return_q_ID"/>
         <xsl:with-param name="q_endpointName" select="$return_q_ID"/>        
         <xsl:with-param name="queueFactoryID" select="'controllerJmsFactory'"/>
         <xsl:with-param name="inputOrReturn" select="'return'"/>
-        <xsl:with-param name="kind" select="'asAggr'"/>
+        <xsl:with-param name="kind" select="'asAggr'"/-->
         <!-- used as 1st part of ctlr name -->
-        <xsl:with-param name="msgHandlerChainID"
+        <!--xsl:with-param name="msgHandlerChainID"
           select="f:getMetaMsgHandlerID($analysisEngine, 'aggregate_return')"/>
         <xsl:with-param name="nbrConcurrentConsumers" select="string(@internalReplyQueueScaleout)"/>
         <xsl:with-param name="remote" select="()"/>
         <xsl:with-param name="poolingTaskExecutor" select="()"/>
-      </xsl:call-template>
-    </xsl:if>
+      </xsl:call-template-->
+   
     
     <!-- we iterate over all the delegates in order to have the right value for position() -->
     <xsl:for-each select="u:delegates/*">
@@ -554,7 +588,7 @@
           <xsl:with-param name="kind" select="'asAggr'"/>
           <!-- used as 1st part of ctlr name -->
           <xsl:with-param name="msgHandlerChainID"
-            select="f:getMetaMsgHandlerID($analysisEngine, 'aggregate_return')"/>
+            select="f:getProcessResponseHandlerID($analysisEngine, 'aggregate_return')"/>
           <xsl:with-param name="nbrConcurrentConsumers" 
             select="@remoteReplyQueueScaleout"/>  
           <xsl:with-param name="remote" select="."/>
@@ -568,13 +602,19 @@
                               else f:getInternalInputQueueName(.)"/>
     <!--xsl:message select="'*** origin_q_name: '"/>
     <xsl:message select="$origin_q_name"/-->
-    
-    <xsl:call-template name="generateOutputChannel">
-      <xsl:with-param name="aeNode" select="."/>
-      <xsl:with-param name="origin_q_name" select="$origin_q_name"/>
-      <xsl:with-param name="return_q_ID" select="$return_q_ID"/>
-      <xsl:with-param name="kind" select="'asAggr'"/>
-    </xsl:call-template>
+ 
+    <!-- skip generating output channel for internal reply queues 
+         because internal reply queues no longer used 
+         Still need this for returning values from top level component to invoker, or
+         for sending value to remotes -->
+    <xsl:if test="parent::u:service or u:delegates/u:remoteAnalysisEngine">       
+      <xsl:call-template name="generateOutputChannel">
+        <xsl:with-param name="aeNode" select="."/>
+        <xsl:with-param name="origin_q_name" select="$origin_q_name"/>
+        <xsl:with-param name="return_q_ID" select="$return_q_ID"/>
+        <xsl:with-param name="kind" select="'asAggr'"/>
+      </xsl:call-template>
+    </xsl:if>
     
     <xsl:sequence select="f:generateLineComment('map for delegate keys', 3)"/>
     <bean id="{$delegateMapID}" class="java.util.HashMap" singleton="true">
@@ -663,7 +703,8 @@
             
           </bean>
         </xsl:when>
-        <xsl:otherwise>     
+        <xsl:otherwise>  
+          <!-- removed lazy init: lazy-init="{if (parent::u:service) then 'true' else 'false'}" -->   
           <bean id="{$ctlrID}"
             class="org.apache.uima.aae.controller.PrimitiveAnalysisEngineController_impl"
             init-method="initialize">
@@ -698,7 +739,9 @@
               <constructor-arg index="8" value="{u:casMultiplier/@initialFsHeapSize}"/>
             </xsl:if>
             
-            <property name="outputChannel" ref="{f:getOutputChannelID(.)}"/>
+            <xsl:if test="parent::u:service">
+              <property name="outputChannel" ref="{f:getOutputChannelID(.)}"/>
+            </xsl:if>  
             <xsl:if test="parent::u:service">
               <property name="errorHandlerChain" ref="{f:getErrorHandlerChainID(.)}"/>         
             </xsl:if>
@@ -707,39 +750,49 @@
       </xsl:choose>
     </xsl:if>
     
-      <!-- next logic is true for lower levels in an aggregate -->
+      <!-- next logic is true for lower levels in an aggregate as well as top level not CPP -->
     <xsl:if test="not(../../u:service[@i:isTopLvlCpp eq 'yes'])">    
       <xsl:variable name="poolingTaskExecutorID" select="f:getPoolingTaskExecutorID(.)"/>
       <!--xsl:variable name="scaleoutPlus" select=
         "if (parent::u:service and u:casMultiplier) then
            number(u:scaleout/@numberOfInstances) + 1 else
            number(u:scaleout/@numberOfInstances) + 0"/-->
-      
-      <xsl:sequence select="f:generateLineComment('ThreadPool Task Executor',3)"/>    
-      <bean id="{$poolingTaskExecutorID}" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
-        <property name="corePoolSize" value="{u:scaleout/@numberOfInstances}" />
-        <property name="maxPoolSize" value="{u:scaleout/@numberOfInstances}" />
-        <property name="queueCapacity" value="{u:scaleout/@numberOfInstances}" />
-      </bean>
-      
-      <xsl:call-template name="generateMsgHandlerChain">
-        <xsl:with-param name="aeNode" select="."/>
-        <xsl:with-param name="kind" select="'primitive'"/>
-      </xsl:call-template>
+  
+      <!-- removed when java q added for local  -->
+      <!-- only generate ThreadPoolTaskExecutor for top level primitives -->
+      <xsl:if test="parent::u:service">            
+        <xsl:sequence select="f:generateLineComment('ThreadPool Task Executor',3)"/>    
+        <bean id="{$poolingTaskExecutorID}" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
+          <property name="corePoolSize" value="{u:scaleout/@numberOfInstances}" />
+          <property name="maxPoolSize" value="{u:scaleout/@numberOfInstances}" />
+          <property name="queueCapacity" value="{u:scaleout/@numberOfInstances}" />
+        </bean>
+      </xsl:if>
      
-      <xsl:call-template name="generateInputChannel">
-        <xsl:with-param name="aeNameUnique" select="$aeNameUnique"/> 
-        <xsl:with-param name="q_ID" select="$input_q_ID"/>
-        <xsl:with-param name="q_endpointName" select="$input_q_ID"/>      
-        <xsl:with-param name="queueFactoryID" select="$inputQueueFactoryID"/>
-        <xsl:with-param name="inputOrReturn" select="'input'"/>
-        <xsl:with-param name="kind" select="'primitive'"/>  <!-- used in ctrl id name -->
-        <xsl:with-param name="msgHandlerChainID" select="f:getMetaMsgHandlerID(., 'primitive')"/>
-        <xsl:with-param name="nbrConcurrentConsumers" select="u:scaleout/@numberOfInstances"/> 
-        <xsl:with-param name="remote" select="()"/>
-        <xsl:with-param name="poolingTaskExecutor" select="$poolingTaskExecutorID"/>     
-      </xsl:call-template>
-   
+      <!-- only generate input message handlers and input channels for top level - 
+           others using internal queuing mechanisms -->
+      <xsl:if test="parent::u:service">       
+        <xsl:call-template name="generateMsgHandlerChain">
+          <xsl:with-param name="aeNode" select="."/>
+          <xsl:with-param name="kind" select="'primitive'"/>
+        </xsl:call-template>
+
+     
+        <xsl:call-template name="generateInputChannel">
+          <xsl:with-param name="aeNameUnique" select="$aeNameUnique"/> 
+          <xsl:with-param name="q_ID" select="$input_q_ID"/>
+          <xsl:with-param name="q_endpointName" select="$input_q_ID"/>      
+          <xsl:with-param name="queueFactoryID" select="$inputQueueFactoryID"/>
+          <xsl:with-param name="inputOrReturn" select="'input'"/>
+          <xsl:with-param name="kind" select="'primitive'"/>  <!-- used in ctrl id name -->
+          <xsl:with-param name="msgHandlerChainID" select="f:getMetaMsgHandlerID(., 'primitive')"/>
+          <xsl:with-param name="nbrConcurrentConsumers" select="u:scaleout/@numberOfInstances"/> 
+          <xsl:with-param name="remote" select="()"/>
+          <xsl:with-param name="poolingTaskExecutor" select="$poolingTaskExecutorID"/>     
+        </xsl:call-template>
+ 
+      </xsl:if>    
+      
       <!-- next to be commented out due to design change summer 2008 -->
       <!--xsl:if test="parent::u:service and u:casMultiplier">
         <xsl:call-template name="generateCMSyncInputChannel">
@@ -761,13 +814,16 @@
                                 else f:getInternalInputQueueName(.)"/>
       <!--xsl:message select="'*** origin_q_name: '"/>
       <xsl:message select="$origin_q_name"/-->
-     
-      <xsl:call-template name="generateOutputChannel">
-        <xsl:with-param name="aeNode" select="."/>
-        <xsl:with-param name="origin_q_name" select="$origin_q_name"/>
-        <xsl:with-param name="kind" select="'primitive'"/>
-      </xsl:call-template>
-  
+
+      <!-- skip generating output channel for internal reply queues 
+           because internal reply queues no longer used -->
+      <xsl:if test="parent::u:service">                  
+        <xsl:call-template name="generateOutputChannel">
+          <xsl:with-param name="aeNode" select="."/>
+          <xsl:with-param name="origin_q_name" select="$origin_q_name"/>
+          <xsl:with-param name="kind" select="'primitive'"/>
+        </xsl:call-template>
+      </xsl:if>
       
       <!-- next call is called for all primitives, but only does something
            for top level primitives -->
@@ -943,6 +999,7 @@
       select="concat($kind, '_', $inputOrReturn, '_msgLsnrCntnr_', $aeNameUnique,
              if ($remote) then concat('_', $remote/@key) else '')"/>    
 
+  
     <xsl:sequence select="f:generateLineComment((
       '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
  concat('JMS msg listener for ', $inputOrReturn, ' queue for:'),
@@ -959,6 +1016,7 @@
       </xsl:if>
     </bean>
 
+      
     <xsl:sequence select="f:generateLineComment((
       '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
    concat('JMS msg listener container for ', $inputOrReturn, ' queue for:'),
@@ -995,7 +1053,7 @@
         <property name="messageSelector" value="Command=2000 OR Command=2002" /> <!-- Process or CPC request -->
       </xsl:if>
     </bean>
-    
+     
     <xsl:if test="$remote[self::u:remoteAnalysisEngine]">
       <xsl:sequence select="f:generateLineComment((
         '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
@@ -1137,30 +1195,35 @@
        concat(' for controller: ', f:getControllerID($aeNode))), 3)"/>
        
      <xsl:sequence select="concat($nl,'   ')"/>
-     <bean id="{f:getMetaMsgHandlerID($aeNode, $kind)}"
-       class="org.apache.uima.aae.handler.input.MetadataRequestHandler_impl">
-      <!-- Define handlers name -->
-      <constructor-arg index="0" value="MetadataRequestHandler"/>
-      <property name="controller" ref="{f:getControllerID($aeNode)}"/>
-      <!-- Link to the next handler in the chain -->
-      <property name="delegate" ref="{f:getProcessRequestHandlerID($aeNode, $kind)}"/>
-    </bean>
-
-    <xsl:sequence select="$nl2"/>
-    <bean id="{f:getProcessRequestHandlerID($aeNode, $kind)}" class="org.apache.uima.aae.handler.input.ProcessRequestHandler_impl" >
-      <!-- Define handlers name -->
-      <constructor-arg index="0" value="ProcessRequestHandler"/>
-      <property name="controller" ref="{f:getControllerID($aeNode)}" />
-      <!-- Link to the next handler in the chain -->
-      <xsl:if test="$kind eq 'aggregate_return'">
-        <property name="delegate" ref="{f:getProcessResponseHandlerID($aeNode, $kind)}" />
-      </xsl:if>
-    </bean>
-
+    
+     <!-- either generate "return" msg handlers or "receiving requests" msg handlers -->
+     <xsl:if test="$kind ne 'aggregate_return'"> 
+       <bean id="{f:getMetaMsgHandlerID($aeNode, $kind)}"
+         class="org.apache.uima.aae.handler.input.MetadataRequestHandler_impl">
+        <!-- Define handlers name -->
+        <constructor-arg index="0" value="MetadataRequestHandler"/>
+        <property name="controller" ref="{f:getControllerID($aeNode)}"/>
+        <!-- Link to the next handler in the chain -->
+        <property name="delegate" ref="{f:getProcessRequestHandlerID($aeNode, $kind)}"/>
+      </bean>
+  
+      <xsl:sequence select="$nl2"/>
+      <bean id="{f:getProcessRequestHandlerID($aeNode, $kind)}" class="org.apache.uima.aae.handler.input.ProcessRequestHandler_impl" >
+        <!-- Define handlers name -->
+        <constructor-arg index="0" value="ProcessRequestHandler"/>
+        <property name="controller" ref="{f:getControllerID($aeNode)}" />
+        <!-- Link to the next handler in the chain -->
+        <!--xsl:if test="$kind eq 'aggregate_return'">
+          <property name="delegate" ref="{f:getProcessResponseHandlerID($aeNode, $kind)}" />
+        </xsl:if-->
+      </bean>
+    </xsl:if>
+    
     <xsl:if test="$kind eq 'aggregate_return'">
       
       <xsl:sequence select="$nl2"/>
-      <bean id="{f:getProcessResponseHandlerID($aeNode, $kind)}" class="org.apache.uima.aae.handler.input.ProcessResponseHandler" >
+      <bean id="{f:getProcessResponseHandlerID($aeNode, 'aggregate_return')}" 
+        class="org.apache.uima.aae.handler.input.ProcessResponseHandler" >
        <!-- Define handlers name -->
         <constructor-arg index="0" value="ProcessResponseHandler"/>
         <property name="controller" ref="{f:getControllerID($aeNode)}" />
@@ -1173,6 +1236,16 @@
        <!-- Define handlers name -->
         <constructor-arg index="0" value="MetadataResponseHandler"/>
         <property name="controller" ref="{f:getControllerID($aeNode)}" />
+        <property name="delegate" ref="{f:getProcessRequestHandlerID($aeNode, $kind)}" />
+      </bean> 
+
+      <xsl:sequence select="$nl2"/>
+      <!-- the reason there is a ProcessRequest handler in the return queue is because
+           this is how Cas Multiplier things are handled -->
+      <bean id="{f:getProcessRequestHandlerID($aeNode, $kind)}" class="org.apache.uima.aae.handler.input.ProcessRequestHandler_impl" >
+        <!-- Define handlers name -->
+        <constructor-arg index="0" value="ProcessRequestHandler"/>
+        <property name="controller" ref="{f:getControllerID($aeNode)}" />
       </bean> 
 
     </xsl:if>
@@ -1182,14 +1255,17 @@
   <!--           Standard Beans                                  =-->       
   <!--============================================================--> 
   <xsl:template name="generateStandardBeans">
+
+    
     <!-- need an internal broker if any of the following are true -->
     <!--   A service is async = true (implies aggregate)
     or The service specifies its input queue as "vm:..."
     -->
-    
+
+    <!-- only generate for inputq = localhost.  async=true handled with Java queue -->
+    <!-- removed: boolean(u:service/u:analysisEngine[@async eq 'true']) or  -->    
     <xsl:if
-      test="boolean(u:service/u:analysisEngine[@async eq 'true']) or
-                  boolean(u:service/u:inputQueue[@brokerURL='vm://localhost'])">
+      test="boolean(u:service/u:inputQueue[@brokerURL='vm://localhost'])">
       
       <xsl:sequence select="f:generateLineComment('connection factory for co-located things',3)"/>
       <bean id="controllerJmsFactory"
@@ -1200,7 +1276,8 @@
       </bean>
     </xsl:if>
     
-    <xsl:if test="u:service/u:analysisEngine[@async eq 'true']">
+    <!-- no longer for async=true, only for inputq = localhost -->
+    <xsl:if test="boolean(u:service/u:inputQueue[@brokerURL='vm://localhost'])">
       <xsl:sequence select="f:generateLineComment('Deploys a co-located broker',3)"/>
       <bean id="brokerDeployerService" class="org.apache.uima.adapter.jms.activemq.BrokerDeployer">
         <constructor-arg index="0" value="{1000 * 1024 * 1024}"/>
@@ -1270,6 +1347,8 @@
     <xsl:for-each select="u:analysisEngine">
       
       <xsl:variable name="iqn" select="f:getInternalInputQueueName(.)"/>
+      
+      <!-- no longer generate internal input queues - switched to using Java queues
       <xsl:sequence select="f:generateLineComment((
         '~~~~~~~~~~~~~~~~~~~~~~~~~~~',
         'Internal Input Queue for',
@@ -1279,6 +1358,7 @@
             class="org.apache.activemq.command.ActiveMQQueue">
          <constructor-arg index="0" value="{$iqn}"/>
       </bean>
+      -->
       
       <xsl:apply-templates  select=".">
         <xsl:with-param tunnel="yes" name="input_q_ID" select="$iqn"/>
@@ -1603,8 +1683,12 @@
          'has delegate?', if (u:delegates) then 'true' else 'false',
          'async is:', $async), .)"/-->
     
+    
     <xsl:variable name="internalReplyQueueScaleout" as="xs:string">
-      <xsl:choose>
+      <!-- next choose commentted out because it disallowed internal reply q scaleout
+           for primitives - but this could be needed for primitives which are
+           CAS multipliers -->
+      <!--xsl:choose>
         <xsl:when test="(string($async) = 'false') and @internalReplyQueueScaleout">
           <xsl:sequence select="f:msgWithLineNumber('WARN',
               ('deployment descriptor for analysisEngine:', $key,
@@ -1613,10 +1697,10 @@
               .)"/>
           <xsl:value-of select="'1'"/>
         </xsl:when>
-        <xsl:otherwise>
+        <xsl:otherwise-->
           <xsl:sequence select="if (@internalReplyQueueScaleout) then @internalReplyQueueScaleout else '1'"/>
-        </xsl:otherwise>
-      </xsl:choose>
+        <!--/xsl:otherwise>
+      </xsl:choose-->
     </xsl:variable>
 
     <xsl:variable name="inputQueueScaleout" as="xs:string">
@@ -1625,7 +1709,8 @@
           <xsl:sequence select="f:msgWithLineNumber('WARN',
               ('deployment descriptor for analysisEngine:', $key,
                'specifies', concat('inputQueueScaleout=&quot;', string(@inputQueueScaleout),
-               '&quot;, this is ignored for async=&quot;false&quot; analysisEngine specifications.')),
+               '&quot;, this is ignored for async=&quot;false&quot; analysisEngine specifications.'),
+               'Use the scaleout numberOfInstances=xx element instead for this, for primitives.'),
               .)"/>
           <xsl:value-of select="'1'"/>
         </xsl:when>

Added: incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/main/scripts/runRemoteAsyncAEmultiple.cmd
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/main/scripts/runRemoteAsyncAEmultiple.cmd?rev=702261&view=auto
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/main/scripts/runRemoteAsyncAEmultiple.cmd (added)
+++ incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/main/scripts/runRemoteAsyncAEmultiple.cmd Mon Oct  6 14:01:48 2008
@@ -0,0 +1,30 @@
+@REM   Licensed to the Apache Software Foundation (ASF) under one
+@REM   or more contributor license agreements.  See the NOTICE file
+@REM   distributed with this work for additional information
+@REM   regarding copyright ownership.  The ASF licenses this file
+@REM   to you under the Apache License, Version 2.0 (the
+@REM   "License"); you may not use this file except in compliance
+@REM   with the License.  You may obtain a copy of the License at
+@REM
+@REM    http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM   Unless required by applicable law or agreed to in writing,
+@REM   software distributed under the License is distributed on an
+@REM   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM   KIND, either express or implied.  See the License for the
+@REM   specific language governing permissions and limitations
+@REM   under the License.
+
+@if not defined UIMA_HOME goto USAGE_UIMA
+@goto RUN
+
+:USAGE_UIMA
+@echo UIMA_HOME environment variable is not set
+@goto EXIT
+
+:RUN
+@setlocal
+@call "%UIMA_HOME%\bin\setUimaClassPath"
+@if "%JAVA_HOME%"=="" (set UIMA_JAVA_CALL=java) else (set UIMA_JAVA_CALL=%JAVA_HOME%\bin\java)
+for /L %%i in (0, 1, 10) do "%UIMA_JAVA_CALL%" -cp "%UIMA_CLASSPATH%" "-Duima.datapath=%UIMA_DATAPATH%" "-Djava.util.logging.config.file=%UIMA_LOGGER_CONFIG_FILE%" %UIMA_JVM_OPTS% org.apache.uima.examples.as.RunRemoteAsyncAE %*
+:EXIT

Modified: incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/java/org/apache/uima/as/dd/Dd2SpringTest.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/java/org/apache/uima/as/dd/Dd2SpringTest.java?rev=702261&r1=702260&r2=702261&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/java/org/apache/uima/as/dd/Dd2SpringTest.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/java/org/apache/uima/as/dd/Dd2SpringTest.java Mon Oct  6 14:01:48 2008
@@ -89,6 +89,18 @@
   protected void tearDown() {
     
   }
+  
+  public void testDd2Spring_deployAggrUsingRmtTempQ() throws Exception {
+    checkDd2Spring("Deploy_AggregateUsingRemoteTempQueue.xml");
+  }
+
+  public void testDd2Spring_concurRemoteConsumers() throws Exception {
+    checkDd2Spring("aggrRmtConcurrentReply.xml");
+  }
+
+  public void testVmBkrBad() throws Exception {
+    checkDd2Spring("vmBkrBad.xml");
+  }
 
   public void testDd2Spring_inputQueueScaleout3() throws Exception {
     checkDd2Spring("iq3.xml");
@@ -110,9 +122,6 @@
     checkDd2Spring("iq1AE.xml");
   }
 
-  public void testDd2Spring_concurRemoteConsumers() throws Exception {
-    checkDd2Spring("aggrRmtConcurrentReply.xml");
-  }
 
   public void testDd2Spring_multiLevelAsyncDefaulting() throws Exception {
     checkDd2Spring("Deploy_MeetingFinder.xml");

Added: incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/deploy/Deploy_AggregateUsingRemoteTempQueue.xml
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/deploy/Deploy_AggregateUsingRemoteTempQueue.xml?rev=702261&view=auto
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/deploy/Deploy_AggregateUsingRemoteTempQueue.xml (added)
+++ incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/deploy/Deploy_AggregateUsingRemoteTempQueue.xml Mon Oct  6 14:01:48 2008
@@ -0,0 +1,59 @@
+<?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">
+  
+  <name>Top Level TAE</name>
+  <description></description>
+  
+  <deployment protocol="jms" provider="activemq">
+    <casPool numberOfCASes="5"/>
+    <service>
+      <inputQueue endpoint="TopLevelTaeQueue" brokerURL="tcp://localhost:8118" prefetch="1"/>
+      <topDescriptor>
+        <import location="../descriptors/analysis_engine/SimpleTestAggregate.xml"/>
+      </topDescriptor>
+      <analysisEngine>
+        <delegates>
+          <analysisEngine key="TestMultiplier" internalReplyQueueScaleout="7">
+            <scaleout numberOfInstances="8"/>
+	          <casMultiplier poolSize="5"/> 
+          </analysisEngine>
+        
+        
+          <remoteAnalysisEngine key="NoOp">
+	                  <inputQueue endpoint="NoOpAnnotatorQueue" brokerURL="tcp://localhost:8118"/>
+	                  <replyQueue location="remote"/>
+	                  <serializer method="xmi"/>
+                      <asyncAggregateErrorConfiguration>
+                            <getMetadataErrors maxRetries="0" timeout="4000" errorAction="disable" />
+                            <processCasErrors maxRetries="0" continueOnRetryFailure="true" thresholdCount="2" thresholdAction="disable" />
+                      </asyncAggregateErrorConfiguration>
+          </remoteAnalysisEngine>
+
+        </delegates>
+      </analysisEngine>
+    </service>
+  </deployment>
+  
+</analysisEngineDeploymentDescription>

Added: incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/deploy/expected/Deploy_AggregateUsingRemoteTempQueue.xml
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/deploy/expected/Deploy_AggregateUsingRemoteTempQueue.xml?rev=702261&view=auto
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/deploy/expected/Deploy_AggregateUsingRemoteTempQueue.xml (added)
+++ incubator/uima/sandbox/trunk/uima-as/uima-as-distr/src/test/resources/deploy/expected/Deploy_AggregateUsingRemoteTempQueue.xml Mon Oct  6 14:01:48 2008
@@ -0,0 +1,437 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--==================================================================================-->
+ <!-- Generated from                                                                                  -->
+ <!-- file:/C:/a/Eclipse/apache/uima-as-distr/src/test/resources/deploy/Deploy_AggregateUsingRemoteTempQueue.xml -->
+ <!-- 6 October, 2008, 11:40:34 A.M.                                                                             -->
+ <!--==================================================================================-->
+ <!DOCTYPE beans
+  PUBLIC "-//Spring//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
+<beans>
+
+   <!-- Factory for specific external queue broker:  -->
+   <!--             tcp://localhost:8118             -->
+   <bean id="qBroker_tcp_c__ss_localhost_c_8118"
+         class="org.apache.activemq.ActiveMQConnectionFactory">
+      <property name="brokerURL" value="tcp://localhost:8118"/>
+      <property name="prefetchPolicy" ref="prefetchPolicy"/>
+   </bean>
+
+   <!-- Creates an instance of the ResourceManager -->
+   <bean id="resourceManager" class="org.apache.uima.aae.UimaClassFactory"
+         factory-method="produceResourceManager"
+         singleton="true"/>
+
+   <!-- Creates an instance of the CasManager  -->
+   <bean id="casManager" class="org.apache.uima.aae.AsynchAECasManager_impl"
+         singleton="true">
+      <constructor-arg index="0" ref="resourceManager"/>
+
+     <!-- Defines how many CASes will be in the CAS pool -->
+     <property name="casPoolSize" value="5"/>
+
+     <!-- Initial heap size for CASes  -->
+     <property name="initialFsHeapSize" value="2000000"/>
+   </bean>
+
+   <!-- Creates a Shared Cache -->
+   <bean id="inProcessCache" class="org.apache.uima.aae.InProcessCache"/>
+
+   <!-- Create prefetch policy -->
+   <bean id="prefetchPolicy" class="org.apache.activemq.ActiveMQPrefetchPolicy">
+      <property name="queuePrefetch" value="1"/>
+   </bean>
+
+   <!--=================================-->
+   <!--    E r r o r   D e t a i l s    -->
+   <!--=================================-->
+   <bean id="errorConfig__TCnt_0_TWndw_0_Action_"
+         class="org.apache.uima.aae.error.Threshold"
+         singleton="true">
+      <property name="threshold" value="0"/>
+      <property name="window" value="0"/>
+      <property name="action" value=""/>
+   </bean>
+
+   <bean id="errorConfig__Action_" class="org.apache.uima.aae.error.Threshold"
+         singleton="true">
+      <property name="action" value=""/>
+   </bean>
+
+   <bean id="errorConfig__Rtry_0_Action_terminate"
+         class="org.apache.uima.aae.error.Threshold"
+         singleton="true">
+      <property name="maxRetries" value="0"/>
+      <property name="action" value="terminate"/>
+   </bean>
+
+   <bean id="errorConfig__Rtry_0_Continue_false_TCnt_0_TWndw_0_Action_"
+         class="org.apache.uima.aae.error.Threshold"
+         singleton="true">
+      <property name="maxRetries" value="0"/>
+      <property name="continueOnRetryFailure" value="false"/>
+      <property name="threshold" value="0"/>
+      <property name="window" value="0"/>
+      <property name="action" value=""/>
+   </bean>
+
+   <bean id="errorConfig__Rtry_0_Action_disable"
+         class="org.apache.uima.aae.error.Threshold"
+         singleton="true">
+      <property name="maxRetries" value="0"/>
+      <property name="action" value="disable"/>
+   </bean>
+
+   <bean id="errorConfig__Rtry_0_Continue_true_TCnt_2_TWndw_0_Action_disable"
+         class="org.apache.uima.aae.error.Threshold"
+         singleton="true">
+      <property name="maxRetries" value="0"/>
+      <property name="continueOnRetryFailure" value="true"/>
+      <property name="threshold" value="2"/>
+      <property name="window" value="0"/>
+      <property name="action" value="disable"/>
+   </bean>
+
+
+   <!--input queue for service-->
+   <bean id="top_level_input_queue_service_1"
+         class="org.apache.activemq.command.ActiveMQQueue">
+      <constructor-arg index="0" value="TopLevelTaeQueue"/>
+   </bean>
+   <!--=====================================-->
+   <!-- Async Aggregate: TopLevelTaeQueue_1 -->
+   <!--=====================================-->
+   <bean id="asAggr_ctlr_TopLevelTaeQueue_1"
+         class="org.apache.uima.aae.controller.AggregateAnalysisEngineController_impl"
+         init-method="initialize">
+      <constructor-arg index="0">
+         <null/>
+      </constructor-arg>
+      <constructor-arg index="1" value="TopLevelTaeQueue"/>
+      <constructor-arg index="2"
+                       value="file:/C:/a/Eclipse/apache/uima-as-distr/src/test/resources/descriptors/analysis_engine/SimpleTestAggregate.xml"/>
+      <constructor-arg index="3" ref="casManager"/>
+      <constructor-arg index="4" ref="inProcessCache"/>
+      <constructor-arg index="5" ref="delegate_map_TopLevelTaeQueue_1"/>
+      <property name="outputChannel" ref="outChnl_TopLevelTaeQueue_1"/>
+      <property name="serviceEndpointName" value="top_level_input_queue_service_1"/>
+      <property name="controllerBeanName" value="asAggr_ctlr_TopLevelTaeQueue_1"/>
+      <property name="errorHandlerChain" ref="err_hdlr_chn_TopLevelTaeQueue_1"/>
+      <property name="flowControllerDescriptor"
+                value="*importByName:org.apache.uima.flow.FixedFlowController"/>
+   </bean>
+
+   <!--===================================================-->
+   <!--   M E S S A G E    H A N D L E R: aggregate_input -->
+   <!--  for controller: asAggr_ctlr_TopLevelTaeQueue_1   -->
+   <!--===================================================-->
+
+   <bean id="aggregate_input_metaMsgHandler_TopLevelTaeQueue_1"
+         class="org.apache.uima.aae.handler.input.MetadataRequestHandler_impl">
+      <constructor-arg index="0" value="MetadataRequestHandler"/>
+      <property name="controller" ref="asAggr_ctlr_TopLevelTaeQueue_1"/>
+      <property name="delegate" ref="aggregate_input_processRequestHandler_TopLevelTaeQueue_1"/>
+   </bean>
+
+   <bean id="aggregate_input_processRequestHandler_TopLevelTaeQueue_1"
+         class="org.apache.uima.aae.handler.input.ProcessRequestHandler_impl">
+      <constructor-arg index="0" value="ProcessRequestHandler"/>
+      <property name="controller" ref="asAggr_ctlr_TopLevelTaeQueue_1"/>
+   </bean>
+
+   <!--====================================================-->
+   <!--   M E S S A G E    H A N D L E R: aggregate_return -->
+   <!--  for controller: asAggr_ctlr_TopLevelTaeQueue_1    -->
+   <!--====================================================-->
+
+
+
+<bean id="aggregate_return_processResponseHandler_TopLevelTaeQueue_1"
+         class="org.apache.uima.aae.handler.input.ProcessResponseHandler">
+      <constructor-arg index="0" value="ProcessResponseHandler"/>
+      <property name="controller" ref="asAggr_ctlr_TopLevelTaeQueue_1"/>
+      <property name="delegate"
+                ref="aggregate_return_response_metaMsgHandler_TopLevelTaeQueue_1"/>
+   </bean>
+
+   <bean id="aggregate_return_response_metaMsgHandler_TopLevelTaeQueue_1"
+         class="org.apache.uima.aae.handler.input.MetadataResponseHandler_impl">
+      <constructor-arg index="0" value="MetadataResponseHandler"/>
+      <property name="controller" ref="asAggr_ctlr_TopLevelTaeQueue_1"/>
+      <property name="delegate" ref="aggregate_return_processRequestHandler_TopLevelTaeQueue_1"/>
+   </bean>
+
+   <bean id="aggregate_return_processRequestHandler_TopLevelTaeQueue_1"
+         class="org.apache.uima.aae.handler.input.ProcessRequestHandler_impl">
+      <constructor-arg index="0" value="ProcessRequestHandler"/>
+      <property name="controller" ref="asAggr_ctlr_TopLevelTaeQueue_1"/>
+   </bean>
+
+   <!-- Create the endpoints + output channels, one per delegate -->
+
+
+   <!-- ==================================== -->
+   <!--            TestMultiplier            -->
+   <!--        ** Delegate Endpoint **       -->
+   <!-- ==================================== -->
+   <bean id="endpt_TestMultiplier_1.1"
+         class="org.apache.uima.aae.controller.Endpoint_impl">
+
+     <!--     Broker URI     -->
+     <property name="serverURI" value="vm://localhost"/>
+
+     <!-- Delegate key name or remote queue name -->
+     <property name="endpoint" value="inQ_TestMultiplier_1.1"/>
+
+     <!--      Timeouts      -->
+     <property name="metadataRequestTimeout" value="60000"/>
+      <property name="processRequestTimeout" value="0"/>
+      <property name="collectionProcessCompleteTimeout" value="0"/>
+      <property name="concurrentRequestConsumers" value="8"/>
+      <property name="concurrentReplyConsumers" value="7"/>
+   </bean>
+
+   <!-- ==================================== -->
+   <!--                 NoOp                 -->
+   <!--        ** Delegate Endpoint **       -->
+   <!-- ==================================== -->
+   <bean id="endpt_NoOp_1.2" class="org.apache.uima.aae.controller.Endpoint_impl">
+
+     <!--     Broker URI     -->
+     <property name="serverURI" value="tcp://localhost:8118"/>
+
+     <!-- Delegate key name or remote queue name -->
+     <property name="endpoint" value="NoOpAnnotatorQueue"/>
+
+     <!-- Queue name used for replies, on the remote broker  -->
+     <property name="replyToEndpoint"
+                value="rmtRtrnQ_TopLevelTaeQueue_1_NoOp_9.2.34.805fa77f87:11cd2d127c1:-8000"/>
+
+     <!--      Timeouts      -->
+     <property name="metadataRequestTimeout" value="4000"/>
+      <property name="processRequestTimeout" value="0"/>
+      <property name="collectionProcessCompleteTimeout" value="0"/>
+      <property name="serializer" value=""/>
+      <property name="tempReplyDestination" value="true"/>
+   </bean>
+
+   <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+   <!-- JMS msg listener for input queue for:  -->
+   <!--    top_level_input_queue_service_1     -->
+   <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+   <bean id="asAggr_input_q_listenerID_TopLevelTaeQueue_1"
+         class="org.apache.uima.adapter.jms.activemq.JmsInputChannel">
+      <property name="messageHandler" ref="aggregate_input_metaMsgHandler_TopLevelTaeQueue_1"/>
+      <property name="endpointName" value="top_level_input_queue_service_1"/>
+      <property name="controller" ref="asAggr_ctlr_TopLevelTaeQueue_1"/>
+      <property name="listenerContainer" ref="asAggr_input_msgLsnrCntnr_TopLevelTaeQueue_1"/>
+   </bean>
+
+   <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+   <!-- JMS msg listener container for input queue for:  -->
+   <!--         top_level_input_queue_service_1          -->
+   <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+   <bean id="asAggr_input_msgLsnrCntnr_TopLevelTaeQueue_1"
+         class="org.apache.uima.adapter.jms.activemq.UimaDefaultMessageListenerContainer">
+
+     <!-- Define number of JMS Consumers -->
+     <property name="concurrentConsumers" value="1"/>
+
+     <!--    input Queue     -->
+     <property name="destination" ref="top_level_input_queue_service_1"/>
+
+     <!-- POJO to delegate JMS Messages to -->
+     <property name="messageListener" ref="asAggr_input_q_listenerID_TopLevelTaeQueue_1"/>
+      <property name="connectionFactory" ref="qBroker_tcp_c__ss_localhost_c_8118"/>
+      <property name="messageSelector" value="Command=2000 OR Command=2002"/>
+   </bean>
+
+   <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+   <!-- GetMeta JMS msg listener container for input queue for:  -->
+   <!--             top_level_input_queue_service_1              -->
+   <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+   <bean id="asAggr_input_msgLsnrCntnr_TopLevelTaeQueue_1_getMeta"
+         class="org.apache.uima.adapter.jms.activemq.UimaDefaultMessageListenerContainer">
+
+     <!-- Define number of JMS Consumers -->
+     <property name="concurrentConsumers" value="1"/>
+
+     <!--    input Queue     -->
+     <property name="destination" ref="top_level_input_queue_service_1"/>
+
+     <!-- POJO to delegate JMS Messages to -->
+     <property name="messageListener" ref="asAggr_input_q_listenerID_TopLevelTaeQueue_1"/>
+      <property name="connectionFactory" ref="qBroker_tcp_c__ss_localhost_c_8118"/>
+      <property name="messageSelector" value="Command=2001"/>
+   </bean>
+
+   <!-- return queue for http or tcp remote service  -->
+   <!--               on remote broker               -->
+   <bean id="rmtRtrnQ_TopLevelTaeQueue_1_NoOp"
+         class="org.apache.activemq.command.ActiveMQQueue">
+      <constructor-arg index="0"
+                       value="rmtRtrnQ_TopLevelTaeQueue_1_NoOp_9.2.34.805fa77f87:11cd2d127c1:-8000"/>
+   </bean>
+
+   <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+   <!-- JMS msg listener for return queue for: -->
+   <!--    rmtRtrnQ_TopLevelTaeQueue_1_NoOp    -->
+   <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+   <bean id="asAggr_return_q_listenerID_TopLevelTaeQueue_1_NoOp"
+         class="org.apache.uima.adapter.jms.activemq.JmsInputChannel">
+      <property name="messageHandler"
+                ref="aggregate_return_processResponseHandler_TopLevelTaeQueue_1"/>
+      <property name="endpointName" value=""/>
+      <property name="controller" ref="asAggr_ctlr_TopLevelTaeQueue_1"/>
+   </bean>
+
+   <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+   <!-- JMS msg listener container for return queue for: -->
+   <!--         rmtRtrnQ_TopLevelTaeQueue_1_NoOp         -->
+   <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+   <bean id="asAggr_return_msgLsnrCntnr_TopLevelTaeQueue_1_NoOp"
+         class="org.apache.uima.adapter.jms.activemq.UimaDefaultMessageListenerContainer">
+
+     <!-- Define number of JMS Consumers -->
+     <property name="concurrentConsumers" value="1"/>
+
+     <!--    return Queue    -->
+     <property name="destinationResolver" ref="destinationResolver_TopLevelTaeQueue_1_NoOp"/>
+      <property name="destinationName" value=""/>
+      <property name="targetEndpoint" ref="endpt_NoOp_1.2"/>
+
+     <!-- POJO to delegate JMS Messages to -->
+     <property name="messageListener" ref="asAggr_return_q_listenerID_TopLevelTaeQueue_1_NoOp"/>
+      <property name="connectionFactory" ref="qBroker_tcp_c__ss_localhost_c_8118"/>
+   </bean>
+
+   <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+   <!--       Destination Resolver for NoOp        -->
+   <!--      rmtRtrnQ_TopLevelTaeQueue_1_NoOp      -->
+   <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+   <bean id="destinationResolver_TopLevelTaeQueue_1_NoOp"
+         class="org.apache.uima.adapter.jms.activemq.TempDestinationResolver"
+         singleton="false">
+      <property name="connectionFactory" ref="qBroker_tcp_c__ss_localhost_c_8118"/>
+   </bean>
+
+   <!-- ================================== -->
+   <!-- OutputChannel - for flows out of   -->
+   <!-- this component, both to delegates  -->
+   <!--  (if aggr) and back up to sender   -->
+   <!-- ================================== -->
+   <bean id="outChnl_TopLevelTaeQueue_1"
+         class="org.apache.uima.adapter.jms.activemq.JmsOutputChannel"
+         init-method="initialize">
+      <property name="serviceInputEndpoint" value="TopLevelTaeQueue"/>
+      <property name="controller" ref="asAggr_ctlr_TopLevelTaeQueue_1"/>
+      <property name="controllerInputEndpoint" value="asynAggr_retQ_TopLevelTaeQueue_1"/>
+   </bean>
+
+   <!-- map for delegate keys  -->
+   <bean id="delegate_map_TopLevelTaeQueue_1" class="java.util.HashMap" singleton="true">
+      <constructor-arg>
+         <map>
+            <entry key="TestMultiplier">
+               <ref bean="endpt_TestMultiplier_1.1"/>
+            </entry>
+            <entry key="NoOp">
+               <ref bean="endpt_NoOp_1.2"/>
+            </entry>
+         </map>
+      </constructor-arg>
+   </bean>
+
+
+   <!--========================-->
+   <!-- Delegate ErrorHandlers -->
+   <!--========================-->
+   <bean id="err_hndlr_getMetadataEr_1"
+         class="org.apache.uima.aae.error.handler.GetMetaErrorHandler">
+      <constructor-arg>
+         <map>
+            <entry key="TestMultiplier">
+               <ref bean="errorConfig__Rtry_0_Action_terminate"/>
+            </entry>
+            <entry key="NoOp">
+               <ref bean="errorConfig__Rtry_0_Action_disable"/>
+            </entry>
+         </map>
+      </constructor-arg>
+   </bean>
+
+   <bean id="err_hndlr_processCasEr_1"
+         class="org.apache.uima.aae.error.handler.ProcessCasErrorHandler">
+      <constructor-arg>
+         <map>
+            <entry key="TestMultiplier">
+               <ref bean="errorConfig__Rtry_0_Continue_false_TCnt_0_TWndw_0_Action_"/>
+            </entry>
+            <entry key="NoOp">
+               <ref bean="errorConfig__Rtry_0_Continue_true_TCnt_2_TWndw_0_Action_disable"/>
+            </entry>
+            <entry key="">
+               <ref bean="errorConfig__TCnt_0_TWndw_0_Action_"/>
+            </entry>
+         </map>
+      </constructor-arg>
+   </bean>
+
+   <bean id="err_hndlr_collectionProcessCompleteEr_1"
+         class="org.apache.uima.aae.error.handler.CpcErrorHandler">
+      <constructor-arg>
+         <map>
+            <entry key="TestMultiplier">
+               <ref bean="errorConfig__Action_"/>
+            </entry>
+            <entry key="NoOp">
+               <ref bean="errorConfig__Action_"/>
+            </entry>
+            <entry key="">
+               <ref bean="errorConfig__Action_"/>
+            </entry>
+         </map>
+      </constructor-arg>
+   </bean>
+
+
+   <!--=======================-->
+   <!--  Error Handler Chain  -->
+   <!--=======================-->
+   <bean id="err_hdlr_chn_TopLevelTaeQueue_1"
+         class="org.apache.uima.aae.error.ErrorHandlerChain">
+      <constructor-arg>
+         <list>
+            <ref local="err_hndlr_getMetadataEr_1"/>
+            <ref local="err_hndlr_processCasEr_1"/>
+            <ref local="err_hndlr_collectionProcessCompleteEr_1"/>
+         </list>
+      </constructor-arg>
+   </bean>
+   <!--=============================================-->
+   <!-- Primitive or non-Async Aggr: TestMultiplier -->
+   <!--=============================================-->
+   <bean id="primitive_ctlr_TestMultiplier_1.1"
+         class="org.apache.uima.aae.controller.PrimitiveAnalysisEngineController_impl"
+         init-method="initialize">
+      <constructor-arg index="0" ref="asAggr_ctlr_TopLevelTaeQueue_1"/>
+
+     <!--      Key name      -->
+     <constructor-arg index="1" value="TestMultiplier"/>
+      <constructor-arg index="2"
+                       value="file:/C:/a/Eclipse/apache/uima-as-distr/src/test/resources/descriptors/analysis_engine/../multiplier/SimpleCasGenerator.xml"/>
+      <constructor-arg index="3" ref="casManager"/>
+      <constructor-arg index="4" ref="inProcessCache"/>
+
+     <!-- this parameter is ignored  -->
+     <constructor-arg index="5" value="10"/>
+
+     <!-- scaleout number of instances -->
+     <constructor-arg index="6" value="8"/>
+
+     <!-- CAS Multiplier poolSize  -->
+     <constructor-arg index="7" value="5"/>
+
+     <!-- CAS Multiplier initial heap size -->
+     <constructor-arg index="8" value="2000000"/>
+   </bean>
+</beans>



Mime
View raw message