You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2009/10/27 22:59:59 UTC

svn commit: r830358 [1/2] - in /incubator/uima/uima-as/trunk/uima-as-docbooks/src: docbook/uima_async_scaleout/ olink/uima_async_scaleout/

Author: schor
Date: Tue Oct 27 21:59:58 2009
New Revision: 830358

URL: http://svn.apache.org/viewvc?rev=830358&view=rev
Log:
UIMA-1635 revise Client API chapter, and add short lifecycle section to the overview.

Modified:
    incubator/uima/uima-as/trunk/uima-as-docbooks/src/docbook/uima_async_scaleout/async.overview.xml
    incubator/uima/uima-as/trunk/uima-as-docbooks/src/docbook/uima_async_scaleout/ref.async.api.xml
    incubator/uima/uima-as/trunk/uima-as-docbooks/src/olink/uima_async_scaleout/htmlsingle-target.db
    incubator/uima/uima-as/trunk/uima-as-docbooks/src/olink/uima_async_scaleout/pdf-target.db

Modified: incubator/uima/uima-as/trunk/uima-as-docbooks/src/docbook/uima_async_scaleout/async.overview.xml
URL: http://svn.apache.org/viewvc/incubator/uima/uima-as/trunk/uima-as-docbooks/src/docbook/uima_async_scaleout/async.overview.xml?rev=830358&r1=830357&r2=830358&view=diff
==============================================================================
--- incubator/uima/uima-as/trunk/uima-as-docbooks/src/docbook/uima_async_scaleout/async.overview.xml (original)
+++ incubator/uima/uima-as/trunk/uima-as-docbooks/src/docbook/uima_async_scaleout/async.overview.xml Tue Oct 27 21:59:58 2009
@@ -1039,7 +1039,7 @@
   </parameters>
 </customResourceSpecifier>]]></programlisting>
     
-    <para>The resouceClassName must be set exactly as shown. Set the brokerURL and endpoint parameters to the
+    <para>The resourceClassName must be set exactly as shown. Set the brokerURL and endpoint parameters to the
       appropriate values for the UIMA AS Service you want to call. These are the same settings you would use in a
       deployment descriptor to specify the location of a remote delegate. Note that this is a synchronous adapter,
       which processes one CAS at a time, so it will not take advantage of the scalability that UIMA AS provides. To
@@ -1049,6 +1049,21 @@
         targetptr="ugr.ref.xml.component_descriptor.custom_resource_specifiers"></olink>. </para>
   </section>
   
+  <section id="ugr.async.ov.concepts.lifecycle">
+    <title>Life cycle</title>
+    
+    <para>Running UIMA AS applications involves deploying (starting) UIMA AS services, perhaps over a wide area
+      network, perhaps on many machines.  UIMA AS as a few preliminary tools to help.  These include the ability
+      of the <xref linkend="ugr.ref.async.api">Client API</xref> to deploy UIMA AS services (limited to deployment within the same 
+      JVM), and scripts such as <code>deployAsyncService</code> that start up a UIMA AS Service.</para>
+        
+    <para><code>deployAsyncService</code> has a facility that launches a keyboard listener after starting, which 
+      listens for a "s" or "q" keystroke.  The "s" stops the service immediately, and the "q" quiesces the service,
+      letting any in-process work finish before stopping.</para>
+      
+    <para>JMX beans for services include a control option to stop the service.</para>
+  </section>
+  
   <!-- next section omitted - this is in base UIMA -->
   <!--section id="ugr.async.ov.concepts.collection_reader">
     <title>Collection Reader support</title>

Modified: incubator/uima/uima-as/trunk/uima-as-docbooks/src/docbook/uima_async_scaleout/ref.async.api.xml
URL: http://svn.apache.org/viewvc/incubator/uima/uima-as/trunk/uima-as-docbooks/src/docbook/uima_async_scaleout/ref.async.api.xml?rev=830358&r1=830357&r2=830358&view=diff
==============================================================================
--- incubator/uima/uima-as/trunk/uima-as-docbooks/src/docbook/uima_async_scaleout/ref.async.api.xml (original)
+++ incubator/uima/uima-as/trunk/uima-as-docbooks/src/docbook/uima_async_scaleout/ref.async.api.xml Tue Oct 27 21:59:58 2009
@@ -28,40 +28,46 @@
   <title>Asynchronous Scaleout Application Interface</title>
   
   <section id="ugr.ref.async.api.organization">
-    <title>Asynchronous API Overview</title>
+    <title>Asynchronous Client API Overview</title>
+    <titleabbrev>Async Client API</titleabbrev>
     <para>
-      The Asynchronous API provides Java applications the capability to connect to
-      and to make requests UIMA-AS services. ProcessCas and CollectionProcessingComplete
+      The Asynchronous Client API provides Java applications the capability to connect to
+      and make requests to UIMA-AS services. ProcessCas and CollectionProcessingComplete
       requests are supported.
     </para>
 
+    <para>It provides four kinds of capabilities:
+      <itemizedlist>
+        <listitem><para>sending requests, receiving replies, asynchronously (or synchronously)</para></listitem>
+        <listitem><para>setting timeouts and limits on the number of simultaneous requests in process (via setting
+          the CAS Pool size)</para></listitem>
+        <listitem><para>using an optionally provided collection reader to obtain items to process</para></listitem>
+        <listitem><para>deploying services as part of the startup process</para></listitem>
+      </itemizedlist></para>
+      
     <para>
       An application can use this API to 
       prepare and send each CAS to a service one at a time, or
       alternately can use a UIMA collection reader to prepare the CASes to be delivered.
-      The application must provide a listener class to receive asynchronous replies.
+      </para>
+      
+      <para>
+      The application normally provides a listener class to receive asynchronous replies.
       For individual CAS requests a synchronous sendAndReceive call is available. 
-      As an alternative for this case (for synchronous requests to a
-      UIMA-AS service), instead of using this client API, 
+      As an alternative for this synchronous call, instead of using this client API, 
       the standard UIMA Analysis Engine APIs
       can be used with an analysis engine instantiated from a JMS Service Descriptor.
       See <xref linkend="ugr.async.ov.concepts.jms_descriptor"/>.
     </para>
-
-     <para>
-      Other options available in this API include 
-       specifying the maximum number of outstanding requests allowed, timeout
-      values and the size of local Cas pool to create.      
-     </para>
     
     <para>
-      The Asynchronous API can also be used to deploy services.
+      As a convenience, the Asynchronous Client API can also be used to deploy (i.e., "start") services.
       Java services deployed by the API are instantiated in the same JVM. Logging for all UIMA
       components in the same JVM are merged; class names and thread IDs can be used to distinguish
       log entries from different services. All services in the JVM can be monitored by a single
-      JMX console. Native (org.apache.uima.cpp) services can be called from the JVM via the JNI or
+      JMX console. Native C++ UIMA services can be called from the JVM via the JNI or
       optionally be launched as separate processes on the same machine. In either case logging
-      and JMX monitoring for native services are integrated with the those in the JVM.
+      and JMX monitoring for native services are integrated with the other UIMA components in the JVM.
     </para>
     
   </section>
@@ -83,48 +89,50 @@
       
       <itemizedlist>
         <listitem>
-          <para>void initialize( Map anApplicationContext ): Initializes asynchronous client. 
-            Using configuration provided in a given Map object, this method creates a connection to 
+          <para><code>void initialize(Map anApplicationContext)</code>: Initializes an asynchronous client. 
+            Using configuration provided in the given Map object, this method creates a connection to 
             the UIMA-AS Service queue, creates a response queue, and retrieves the service metadata. 
             This method blocks until a reply is received from the service or a timeout occurs.
             If a collection reader has been specified, its typesystem is merged with that from the
             service. The combined typesystem is used to create a Cas pool.
-            On success the application is notified via the listener's initializationComplete() method.
+            On success the application is notified via the listener's initializationComplete() method,
+            which is called prior to the original call unblocking.
             Asynchronous errors are delivered to the listener's entityProcessComplete() method.
             See <xref linkend="ugr.ref.async.context.map"/> for more about the ApplicationContext map.
           </para>
         </listitem>
 
         <listitem>
-          <para>void addStatusCallbackListener(UimaASStatusCallbackListener aListener):
+          <para><code>void addStatusCallbackListener(UimaASStatusCallbackListener aListener)</code>:
             Plugs in an application-specific listener. The application receives callbacks
             via methods in this listener class. More than one listener can be added.
           </para>
         </listitem>
 
         <listitem>
-          <para>CAS getCAS(): Requests a new CAS instance from the CAS pool. This method blocks
+          <para><code>CAS getCAS()</code>: Requests a new CAS instance from the CAS pool. This method blocks
             until a free instance of CAS is available in the CAS pool.
-            Applications that use getCAS() need to call CAS.reset() as appropriate or CAS.release()
+            Applications that use <code>getCAS()</code> need to call <code>CAS.reset()</code> 
+            before reusing the CAS, or <code>CAS.release()</code>
             to return it to the Cas pool.
           </para>
         </listitem>
 
         <listitem>
-          <para>void sendCAS( CAS aCAS ): Sends a given CAS for analysis to the UIMA-AS Service. 
-            The application is notified of responses or timeouts via entityProcessComplete().
+          <para><code>void sendCAS(CAS aCAS)</code>: Sends a given CAS for analysis to the UIMA-AS Service. 
+            The application is notified of responses or timeouts via <code>entityProcessComplete()</code> method.
          </para>
         </listitem>
 
         <listitem>
-          <para>void setCollectionReader( CollectionReader aCollectionReader ): 
-            Plugs in an instantiated CollectionReader instance to use. Must be called before initialize.
-            The application calls the process() method to begin analyzing the collection.
+          <para><code>void setCollectionReader(CollectionReader aCollectionReader)</code>: 
+            Plugs in an instantiated CollectionReader instance to use. This method must be called before
+            <code>initialize</code>.
           </para>
         </listitem>
 
         <listitem>
-          <para>void process(): 
+          <para><code>void process()</code>: 
            Starts processing a collection using a collection reader. The method will block
            until the CollectionReader finishes processing the entire collection.  
            Throws ResourceProcessException if a CollectionReader has not been provided or initialize
@@ -133,40 +141,45 @@
         </listitem>
 
         <listitem>
-          <para>void collectionProcessingComplete(): Sends a Collection Processing Complete request 
-            to the UIMA-AS Analysis Service. The method blocks until the service replies or a timeout occurs.
-            On success the application is notified via the listener's collectionProcessComplete() method.
-            
+          <para><code>void collectionProcessingComplete()</code>: Sends a Collection Processing Complete request 
+            to the UIMA-AS Analysis Service. This call is cascaded down to all delegates; however, if a particular
+            delegate is scaled-out, only one of the instances of the delegate will get this call.  
+            The method blocks until all of the components that received this call have returned, or a timeout occurs.
+            On success or failure, the application is 
+            notified via the statusCallbackListener's collectionProcessComplete() method.
           </para>
         </listitem>
 
         <listitem>
-          <para>void sendAndReceiveCAS(CAS aCAS):
+          <para><code>void sendAndReceiveCAS(CAS aCAS)</code>:
             Send a CAS, wait for response. On success aCAS contains the analysis results.
             Throws an exception on error.
           </para>
         </listitem>
 
         <listitem>
-          <para>String deploy( String aDeploymentDescriptor, Map anApplicationContext): Deploys the UIMA-AS
-            service specified by the given deployment descriptor in this JVM, and returns a handle to the Spring
-            container for this service. The application context map must contain DD2SpringXsltFilePath and
+          <para><code>String aHandle deploy( String aDeploymentDescriptor, Map anApplicationContext)</code>: 
+            Deploys the UIMA-AS
+            service specified by the given deployment descriptor in this JVM, and returns a handle 
+            for this service. The application context map must contain DD2SpringXsltFilePath and
             SaxonClasspath entries. This call blocks until the service is ready to process requests, or an
-            exception occurs during deployment. </para>
+            exception occurs during deployment.  If an exception occurs, the callback listener's </para>
         </listitem>
 
         <listitem>
-          <para>void undeploy( String aSpringContainerId ):
-            Tells the specified service to terminate and removes the Spring container.
+          <para><code>void undeploy(String aHandle)</code>:
+            Tells the specified service to terminate.  The handle is the same handle that is returned
+            by the corresponding <code>deploy(...)</code> method.
           </para>
         </listitem>
 
         <listitem>
-          <para>void stop():
+          <para><code>void stop()</code>:
            Stops the asynchronous client. Removes the Cas pool, drops the connection to the UIMA-AS
            service queue and stops listening on its response queue. 
            Terminates and undeploys any services which have been started with this client.
           </para>
+          <para>This is an asynchronous call, and can be called at any time.</para>
         </listitem>
 
       </itemizedlist></para>
@@ -208,7 +221,7 @@
           </listitem>
           
           <listitem>
-            <para>CAS_INITIAL_HEAPSIZE: (Optional) the initial CAS heapsize.</para>
+            <para>CAS_INITIAL_HEAPSIZE: (Optional) the initial CAS heapsize, in 4-byte words.  Default = 500,000.</para>
           </listitem>
           
           <listitem>
@@ -241,26 +254,27 @@
     <!--======================================================-->    
     <section id="ugr.ref.async.callback.listener">
       <title>Status Callback Listener</title>
-      <para>Asynchronous events are delivered to applications via methods in classes registered
-          to the API object with addStatusCallbackListener(). These classes must extend the
+      <para>Asynchronous events are returned to applications via methods in classes registered
+          to the Client API object with addStatusCallbackListener(). These classes must extend the
           class org.apache.uima.aae.client.UimaAsBaseCallbackListener.
           <!-- These classes must implement the
           interface org.apache.uima.aae.client.UimaASStatusCallbackListener.-->
 
       <itemizedlist>
         <listitem>
-          <para>initializationComplete(EntityProcessStatus aStatus): The callback used to inform the
+          <para><code>initializationComplete(EntityProcessStatus aStatus)</code>: The callback used to inform the
             application that the initialization request has completed. On success aStatus will be
             null; on failure use the UimaASProcessStatus class to get the details.</para>
         </listitem>
 
         <listitem>
-          <para>entityProcessComplete(CAS aCas, EntityProcessStatus aStatus): The callback used to 
+          <para><code>entityProcessComplete(CAS aCas, EntityProcessStatus aStatus)</code>: The callback used to 
             inform the application that a processCas request has completed. On success aCAS object
             will contain result of analysis; on failure the CAS will be in the same state as 
             before it was sent to a service and aStatus will contain the cause of failure. When calling 
-            this method, the Uima AS passes an object of type UimaASProcessStatus as a second argument. 
-            It extends EntityProcessStatus and provides getCasReferenceId() method to retrieve a unique 
+            this method, the UIMA AS passes an object of type <code>UimaASProcessStatus</code> as a second argument. 
+            It extends <code>EntityProcessStatus</code> and provides <code>getCasReferenceId()</code> 
+            method to retrieve a unique 
             id assigned to a CAS. To access this method the user code should implement the following
             <programlisting>
                if ( aStatus instanceof UimaASProcessStatus ) {
@@ -272,15 +286,17 @@
         </listitem>
 
         <listitem>
-          <para>collectionProcessComplete(EntityProcessStatus aStatus): The callback used to inform the
+          <para><code>collectionProcessComplete(EntityProcessStatus aStatus)</code>: The callback used to inform the
             application that the CPC request has completed. On success aStatus will be
-            null; on failure use the UimaASProcessStatus class to get the details.</para>
+            null; on failure use the <code>UimaASProcessStatus</code> class to get the details.</para>
         </listitem>
 
         <listitem>
-          <para>onBeforeMessageSend(UimaASProcessStatus status): The callback used to inform the
+          <para><code>onBeforeMessageSend(UimaASProcessStatus status)</code>: The callback used to inform the
             application that a CAS is about to be sent to a service. The status object has
-            getCasReferenceId() method that returns a unique CAS id assigned by Uima AS.</para>
+            <code>getCasReferenceId()</code> method that returns a unique CAS id assigned by UIMA AS.
+            This reference id may be used to associate arbirary information with a CAS, and is also
+            returned in the callback listener as part of the status object.</para>
         </listitem>
 
       </itemizedlist>
@@ -293,19 +309,16 @@
     <!--======================================================-->    
     <section id="ugr.ref.async.error.status">
       <title>Error Results</title>
-      <para>Errors are delivered to the callback listeners as an EntityProcessStatus object.
-          
-        <note><para>The use of EntityProcessStatus is temporary. This will be replaced shortly.
-        </para></note>
-
+      <para>Errors are delivered to the callback listeners as an 
+        <code>EntityProcessStatus</code> or <code>UimaASProcessStatus</code> object.
+        These objects provide the methods:          
       <itemizedlist>
         <listitem>
-          <para>isException(): Indicates the error returned is in the form of exception messages.
+          <para><code>isException()</code>: Indicates the error returned is in the form of exception messages.
             </para>
         </listitem>
-
         <listitem>
-          <para>getExceptions(): Returns a List of exceptions.
+          <para><code>getExceptions()</code>: Returns a List of exceptions.
             </para>
         </listitem>
       </itemizedlist>
@@ -313,7 +326,7 @@
   </section>
   
   <section id="ugr.ref.async.api.usage">
-    <title>Asynchronous API Usage Scenarios</title>
+    <title>Asynchronous Client API Usage Scenarios</title>
 
   <section id="ugr.ref.async.api.usage_initialize">
     <title>Instantiating a Client API Object</title>

Modified: incubator/uima/uima-as/trunk/uima-as-docbooks/src/olink/uima_async_scaleout/htmlsingle-target.db
URL: http://svn.apache.org/viewvc/incubator/uima/uima-as/trunk/uima-as-docbooks/src/olink/uima_async_scaleout/htmlsingle-target.db?rev=830358&r1=830357&r2=830358&view=diff
==============================================================================
--- incubator/uima/uima-as/trunk/uima-as-docbooks/src/olink/uima_async_scaleout/htmlsingle-target.db (original)
+++ incubator/uima/uima-as/trunk/uima-as-docbooks/src/olink/uima_async_scaleout/htmlsingle-target.db Tue Oct 27 21:59:58 2009
@@ -1 +1 @@
-<div element="book" href="#d0e2" number="" lang="en"><ttl>UIMA Asynchronous Scaleout</ttl><xreftext>UIMA Asynchronous Scaleout</xreftext><div element="chapter" href="#ugr.async.ov" number="1" targetptr="ugr.async.ov"><ttl>Overview - Asynchronous Scaleout</ttl><xreftext>Chapter 1, <i xmlns:xlink="http://www.w3.org/1999/xlink">Overview - Asynchronous Scaleout</i></xreftext><div element="section" href="#ugr.async.ov.terminology" number="1.1" targetptr="ugr.async.ov.terminology"><ttl>Terminology</ttl><xreftext>Section 1.1, “Terminology”</xreftext></div><div element="section" href="#ugr.async.ov.as_vs_cpm" number="1.2" targetptr="ugr.async.ov.as_vs_cpm"><ttl>AS versus CPM</ttl><xreftext>Section 1.2, “AS versus CPM”</xreftext></div><div element="section" href="#ugr.async.ov.design_goals" number="1.3" targetptr="ugr.async.ov.design_goals"><ttl>Design goals for Asynchronous Scaleout</ttl><xreftext>Section 1.3, “Design goals for Asynchronous Scale
 out”</xreftext></div><div element="section" href="#ugr.async.ov.concepts" number="1.4" targetptr="ugr.async.ov.concepts"><ttl>AS Concepts</ttl><xreftext>Section 1.4, “AS Concepts”</xreftext><div element="section" href="#ugr.async.ov.concepts.threading" number="1.4.1" targetptr="ugr.async.ov.concepts.threading"><ttl>User written components and multi-threading</ttl><xreftext>Section 1.4.1, “Threading”</xreftext></div><div element="section" href="#ugr.async.ov.concepts.wrapping" number="1.4.2" targetptr="ugr.async.ov.concepts.wrapping"><ttl>AS Component wrapping</ttl><xreftext>Section 1.4.2, “AS Component wrapping”</xreftext><obj element="figure" href="#ugr.async.ov.fig.wrapAE" number="1.1" targetptr="ugr.async.ov.fig.wrapAE"><ttl>AS Primitive Wrapper</ttl><xreftext>Figure 1.1, “AS Primitive Wrapper”</xreftext></obj><obj element="figure" href="#ugr.async.ov.fig.wrapAAE" number="1.2" targetptr="ugr.async.ov.fig.wrapAAE"><t
 tl>AS Aggregate wrapper</ttl><xreftext>Figure 1.2, “AS Aggregate wrapper”</xreftext></obj></div><div element="section" href="#ugr.async.ov.concepts.deploying" number="1.4.3" targetptr="ugr.async.ov.concepts.deploying"><ttl>Deployment alternatives</ttl><xreftext>Section 1.4.3, “Deployment alternatives”</xreftext><div element="section" href="#ugr.async.ov.concepts.deploying.multiples" number="1.4.3.1" targetptr="ugr.async.ov.concepts.deploying.multiples"><ttl>Configuring multiple instances of components</ttl><xreftext>Section 1.4.3.1, “Multiple Instances”</xreftext></div><div element="section" href="#ugr.async.ov.concepts.deploying.queues" number="1.4.3.2" targetptr="ugr.async.ov.concepts.deploying.queues"><ttl>Queues</ttl><xreftext>Section 1.4.3.2, “Queues”</xreftext></div><div element="section" href="#ugr.async.ov.concepts.deployment_descriptors" number="1.4.3.3" targetptr="ugr.async.ov.concepts.deployment_descriptors"><ttl
 >Deployment Descriptors</ttl><xreftext>Section 1.4.3.3, “Deployment Descriptors”</xreftext><div element="section" href="#ugr.async.ov.concepts.deployment_descriptors.aggregate" number="" targetptr="ugr.async.ov.concepts.deployment_descriptors.aggregate"><ttl>Deploying UIMA aggregates</ttl><xreftext>the section called “Deploying UIMA aggregates”</xreftext></div></div></div><div element="section" href="#ugr.async.ov.concepts.first_limits" number="1.4.4" targetptr="ugr.async.ov.concepts.first_limits"><ttl>Current design limitations</ttl><xreftext>Section 1.4.4, “Limits”</xreftext><div element="section" href="#ugr.async.ov.concepts.first_limits.sofa_mapping" number="1.4.4.1" targetptr="ugr.async.ov.concepts.first_limits.sofa_mapping"><ttl>Sofa Mapping limits</ttl><xreftext>Section 1.4.4.1, “Sofa Mapping limits”</xreftext></div><div element="section" href="#ugr.async.ov.concepts.first_limits.parameter_overriding" number="1.4.4.2" t
 argetptr="ugr.async.ov.concepts.first_limits.parameter_overriding"><ttl>Parameter Overriding limits</ttl><xreftext>Section 1.4.4.2, “Parameter Overriding limits”</xreftext></div><div element="section" href="#ugr.async.ov.concepts.first_limits.resource_sharing" number="1.4.4.3" targetptr="ugr.async.ov.concepts.first_limits.resource_sharing"><ttl>Resource Sharing limits</ttl><xreftext>Section 1.4.4.3, “Resource Sharing limits”</xreftext></div><div element="section" href="#ugr.async.ov.concepts.first_limits.service_descriptors" number="1.4.4.4" targetptr="ugr.async.ov.concepts.first_limits.service_descriptors"><ttl>Use of service descriptors inside AS Aggregates</ttl><xreftext>Section 1.4.4.4, “Use of service descriptors inside AS Aggregates”</xreftext></div></div><div element="section" href="#ugr.async.ov.concepts.first_limits.compatibility" number="1.4.5" targetptr="ugr.async.ov.concepts.first_limits.compatibility"><ttl>Compatibility wit
 h earlier version of remoting and scaleout</ttl><xreftext>Section 1.4.5, “Compatibility”</xreftext></div></div><div element="section" href="#ugr.async.ov.concepts.application" number="1.5" targetptr="ugr.async.ov.concepts.application"><ttl>Application Concepts</ttl><xreftext>Section 1.5, “Application Concepts”</xreftext><div element="section" href="#ugr.async.ov.concepts.application.api" number="1.5.1" targetptr="ugr.async.ov.concepts.application.api"><ttl>Application API</ttl><xreftext>Section 1.5.1, “Application API”</xreftext></div><div element="section" href="#ugr.async.ov.concepts.collection_process_complete" number="1.5.2" targetptr="ugr.async.ov.concepts.collection_process_complete"><ttl>Collection Process Complete</ttl><xreftext>Section 1.5.2, “Collection Process Complete”</xreftext></div></div><div element="section" href="#ugr.async.ov.concepts.mc" number="1.6" targetptr="ugr.async.ov.concepts.mc"><ttl>Monitoring a
 nd Controlling an AS application</ttl><xreftext>Section 1.6, “Monitoring &amp; Controlling”</xreftext></div><div element="section" href="#ugr.async.ov.concepts.jms_descriptor" number="1.7" targetptr="ugr.async.ov.concepts.jms_descriptor"><ttl>JMS Service Descriptor</ttl><xreftext>Section 1.7, “JMS Service Descriptor”</xreftext></div></div><div element="chapter" href="#ugr.async.eh" number="2" targetptr="ugr.async.eh"><ttl>Error Handling for Asynchronous Scaleout</ttl><xreftext>Chapter 2, <i xmlns:xlink="http://www.w3.org/1999/xlink">Error Handling for Asynchronous Scaleout</i></xreftext><div element="section" href="#ugr.async.eh.basic" number="2.1" targetptr="ugr.async.eh.basic"><ttl>Basic concepts</ttl><xreftext>Section 2.1, “Basic concepts”</xreftext></div><div element="section" href="#ugr.async.eh.incoming_commands" number="2.2" targetptr="ugr.async.eh.incoming_commands"><ttl>Associating Errors with incoming commands</ttl><xreftex
 t>Section 2.2, “Associating Errors with incoming commands”</xreftext><div element="section" href="#ugr.asynch.eh.cas_multipliers" number="2.2.1" targetptr="ugr.asynch.eh.cas_multipliers"><ttl>Error handling for CASes generated in an Aggregate by CAS Multipliers</ttl><xreftext>Section 2.2.1, “Error handling - CAS Multipliers”</xreftext></div></div><div element="section" href="#ugr.async.eh.error_handling_overview" number="2.3" targetptr="ugr.async.eh.error_handling_overview"><ttl>Error handling overview</ttl><xreftext>Section 2.3, “Error handling overview”</xreftext><obj element="figure" href="#ugr.async.eh.fig.basic_eh_chain" number="2.1" targetptr="ugr.async.eh.fig.basic_eh_chain"><ttl>Basic error handling chain for AS Aggregates for errors from delegates</ttl><xreftext>Figure 2.1, “Basic error handling chain for AS Aggregates for errors from delegates”</xreftext></obj><obj element="figure" href="#ugr.async.eh.fig.basic_eh
 _chain_prim" number="2.2" targetptr="ugr.async.eh.fig.basic_eh_chain_prim"><ttl>Basic error handling chain for AS Primitives</ttl><xreftext>Figure 2.2, “Basic error handling chain for AS Primitives”</xreftext></obj></div><div element="section" href="#ugr.async.eh.error_results" number="2.4" targetptr="ugr.async.eh.error_results"><ttl>Error results</ttl><xreftext>Section 2.4, “Error results”</xreftext></div><div element="section" href="#ugr.async.eh.aggregate_managed" number="2.5" targetptr="ugr.async.eh.aggregate_managed"><ttl>Error Recovery actions</ttl><xreftext>Section 2.5, “Error Recovery actions”</xreftext><div element="section" href="#ugr.async.eh.aggregate_managed.actions" number="2.5.1" targetptr="ugr.async.eh.aggregate_managed.actions"><ttl>Aggregate Error Actions</ttl><xreftext>Section 2.5.1, “Aggregate Error Actions”</xreftext><div element="section" href="#ugr.async.eh.aggregate_managed.actions.retry" number="2.5
 .1.1" targetptr="ugr.async.eh.aggregate_managed.actions.retry"><ttl>Retry</ttl><xreftext>Section 2.5.1.1, “Retry”</xreftext></div><div element="section" href="#ugr.async.eh.aggregate_disable" number="2.5.1.2" targetptr="ugr.async.eh.aggregate_disable"><ttl>Disable Action</ttl><xreftext>Section 2.5.1.2, “Disable Action”</xreftext><obj element="figure" href="#ugr.async.eh.fig.disable" number="2.3" targetptr="ugr.async.eh.fig.disable"><ttl>Disable action</ttl><xreftext>Figure 2.3, “Disable action”</xreftext></obj></div><div element="section" href="#ugr.async.eh.aggregate_managed.actions.continue" number="2.5.1.3" targetptr="ugr.async.eh.aggregate_managed.actions.continue"><ttl>Continue Option on Delegate Process CAS Failures</ttl><xreftext>Section 2.5.1.3, “Continue Option on Delegate Process CAS Failures”</xreftext></div></div></div><div element="section" href="#ugr.async.eh.errors_passed_up.thresholds" number="2.6" targetptr
 ="ugr.async.eh.errors_passed_up.thresholds"><ttl>Thresholds for Terminate and Disable</ttl><xreftext>Section 2.6, “Thresholds for Terminate and Disable”</xreftext></div><div element="section" href="#ugr.async.eh.terminate" number="2.7" targetptr="ugr.async.eh.terminate"><ttl>Terminate Action</ttl><xreftext>Section 2.7, “Terminate Action”</xreftext><obj element="figure" href="#ugr.async.eh.fig.terminate" number="2.4" targetptr="ugr.async.eh.fig.terminate"><ttl>Terminate action</ttl><xreftext>Figure 2.4, “Terminate action”</xreftext></obj></div><div element="section" href="#ugr.async.eh.commands_allowed_actions" number="2.8" targetptr="ugr.async.eh.commands_allowed_actions"><ttl>Commands and allowed actions</ttl><xreftext>Section 2.8, “Commands and allowed actions”</xreftext><obj element="table" href="#ugr.async.eh.table.error_actions_by_command" number="2.1" targetptr="ugr.async.eh.table.error_actions_by_command"><ttl>Error 
 actions by command type</ttl><xreftext>Table 2.1, “Error actions by command type”</xreftext></obj></div></div><div element="chapter" href="#ugr.ref.async.deploy" number="3" targetptr="ugr.ref.async.deploy"><ttl>Asynchronous Scaleout Deployment Descriptor</ttl><xreftext>Chapter 3, <i xmlns:xlink="http://www.w3.org/1999/xlink">Asynchronous Scaleout Deployment Descriptor</i></xreftext><div element="section" href="#ugr.ref.async.deploy.descriptor_organization" number="3.1" targetptr="ugr.ref.async.deploy.descriptor_organization"><ttl>Descriptor Organization</ttl><xreftext>Section 3.1, “Descriptor Organization”</xreftext></div><div element="section" href="#ugr.ref.async.deploy.descriptor" number="3.2" targetptr="ugr.ref.async.deploy.descriptor"><ttl>Deployment Descriptor</ttl><xreftext>Section 3.2, “Deployment Descriptor”</xreftext></div><div element="section" href="#ugr.ref.async.deploy.descriptor.caspool" number="3.3" targetptr="ugr.ref
 .async.deploy.descriptor.caspool"><ttl>CAS Pool</ttl><xreftext>Section 3.3, “CAS Pool”</xreftext></div><div element="section" href="#ugr.ref.async.deploy.descriptor.service" number="3.4" targetptr="ugr.ref.async.deploy.descriptor.service"><ttl>Service</ttl><xreftext>Section 3.4, “Service”</xreftext></div><div element="section" href="#ugr.ref.async.deploy.descriptor.custom" number="3.5" targetptr="ugr.ref.async.deploy.descriptor.custom"><ttl>Customizing the deployment</ttl><xreftext>Section 3.5, “Customizing the deployment”</xreftext></div><div element="section" href="#ugr.ref.async.deploy.descriptor.input_queue" number="3.6" targetptr="ugr.ref.async.deploy.descriptor.input_queue"><ttl>Input Queue</ttl><xreftext>Section 3.6, “Input Queue”</xreftext></div><div element="section" href="#ugr.ref.async.deploy.descriptor.top_descriptor" number="3.7" targetptr="ugr.ref.async.deploy.descriptor.top_descriptor"><ttl>Top level Analysis
  Engine descriptor</ttl><xreftext>Section 3.7, “Top Level AE Descriptor”</xreftext></div><div element="section" href="#ugr.ref.async.deploy.descriptor.environment_variables" number="3.8" targetptr="ugr.ref.async.deploy.descriptor.environment_variables"><ttl>Setting Environment Variables</ttl><xreftext>Section 3.8, “Setting Environment Variables”</xreftext></div><div element="section" href="#ugr.ref.async.deploy.descriptor.ae" number="3.9" targetptr="ugr.ref.async.deploy.descriptor.ae"><ttl>Analysis Engine</ttl><xreftext>Section 3.9, “Analysis Engine”</xreftext></div><div element="section" href="#ugr.ref.async.deploy.descriptor.errorconfig" number="3.10" targetptr="ugr.ref.async.deploy.descriptor.errorconfig"><ttl>Error Configuration descriptors</ttl><xreftext>Section 3.10, “Error Configuration descriptors”</xreftext></div><div element="section" href="#ugr.ref.async.deploy.descriptor.errorconfig.defaults" number="3.11" targe
 tptr="ugr.ref.async.deploy.descriptor.errorconfig.defaults"><ttl>Error Configuration defaults</ttl><xreftext>Section 3.11, “Error Configuration defaults”</xreftext></div></div><div element="chapter" href="#ugr.ref.async.api" number="4" targetptr="ugr.ref.async.api"><ttl>Asynchronous Scaleout Application Interface</ttl><xreftext>Chapter 4, <i xmlns:xlink="http://www.w3.org/1999/xlink">Asynchronous Scaleout Application Interface</i></xreftext><div element="section" href="#ugr.ref.async.api.organization" number="4.1" targetptr="ugr.ref.async.api.organization"><ttl>Asynchronous API Overview</ttl><xreftext>Section 4.1, “Asynchronous API Overview”</xreftext></div><div element="section" href="#ugr.ref.async.api.descriptor" number="4.2" targetptr="ugr.ref.async.api.descriptor"><ttl>The UimaAsynchronousEngine Interface</ttl><xreftext>Section 4.2, “The UimaAsynchronousEngine Interface”</xreftext></div><div element="section" href="#ugr.ref.asyn
 c.context.map" number="4.3" targetptr="ugr.ref.async.context.map"><ttl>Application Context Map</ttl><xreftext>Section 4.3, “Application Context Map”</xreftext></div><div element="section" href="#ugr.ref.async.callback.listener" number="4.4" targetptr="ugr.ref.async.callback.listener"><ttl>Status Callback Listener</ttl><xreftext>Section 4.4, “Status Callback Listener”</xreftext></div><div element="section" href="#ugr.ref.async.error.status" number="4.5" targetptr="ugr.ref.async.error.status"><ttl>Error Results</ttl><xreftext>Section 4.5, “Error Results”</xreftext></div><div element="section" href="#ugr.ref.async.api.usage" number="4.6" targetptr="ugr.ref.async.api.usage"><ttl>Asynchronous API Usage Scenarios</ttl><xreftext>Section 4.6, “Asynchronous API Usage Scenarios”</xreftext><div element="section" href="#ugr.ref.async.api.usage_initialize" number="4.6.1" targetptr="ugr.ref.async.api.usage_initialize"><ttl>Instantiating 
 a Client API Object</ttl><xreftext>Section 4.6.1, “Instantiating a Client API Object”</xreftext></div><div element="section" href="#ugr.ref.async.api.usage_callservice" number="4.6.2" targetptr="ugr.ref.async.api.usage_callservice"><ttl>Calling an Existing Service</ttl><xreftext>Section 4.6.2, “Calling an Existing Service”</xreftext></div><div element="section" href="#ugr.ref.async.api.usage_getresults" number="4.6.3" targetptr="ugr.ref.async.api.usage_getresults"><ttl>Retrieving Asynchronous Results</ttl><xreftext>Section 4.6.3, “Retrieving Asynchronous Results”</xreftext></div><div element="section" href="#ugr.ref.async.api.usage_deployservice" number="4.6.4" targetptr="ugr.ref.async.api.usage_deployservice"><ttl>Deploying a Service with the Client API</ttl><xreftext>Section 4.6.4, “Deploying a Service with the Client API”</xreftext></div></div><div element="section" href="#ugr.ref.async.api.usage_undeployservice" number=
 "4.7" targetptr="ugr.ref.async.api.usage_undeployservice"><ttl>Undeploying a Service with the Client API</ttl><xreftext>Section 4.7, “Undeploying a Service with the Client API”</xreftext></div><div element="section" href="#ugr.ref.async.api.sample.code" number="4.8" targetptr="ugr.ref.async.api.sample.code"><ttl>Sample Code</ttl><xreftext>Section 4.8, “Sample Code”</xreftext></div></div><div element="chapter" href="#ugr.async.mt" number="5" targetptr="ugr.async.mt"><ttl>Monitoring and Tuning</ttl><xreftext>Chapter 5, <i xmlns:xlink="http://www.w3.org/1999/xlink">Monitoring and Tuning</i></xreftext><div element="section" href="#ugr.async.mt.monitoring" number="5.1" targetptr="ugr.async.mt.monitoring"><ttl>Monitoring</ttl><xreftext>Section 5.1, “Monitoring”</xreftext><div element="section" href="#ugr.async.mt.jmx_monitoring" number="5.1.1" targetptr="ugr.async.mt.jmx_monitoring"><ttl>JMX Information from UIMA AS</ttl><xreftext>Section�
 � 5.1.1, “JMX Information from UIMA AS”</xreftext><div element="section" href="#ugr.async.mt.jmx_monitoring.service" number="5.1.1.1" targetptr="ugr.async.mt.jmx_monitoring.service"><ttl>UIMA AS Services JMX measures</ttl><xreftext>Section 5.1.1.1, “UIMA AS Services JMX measures”</xreftext><div element="section" href="#ugr.async.mt.jmx_monitoring.constant.service" number="" targetptr="ugr.async.mt.jmx_monitoring.constant.service"><ttl>Service information</ttl><xreftext>the section called “Service information”</xreftext></div><div element="section" href="#ugr.async.mt.jmx_monitoring.service.performance" number="" targetptr="ugr.async.mt.jmx_monitoring.service.performance"><ttl>Service Performance Measurements</ttl><xreftext>the section called “Service Performance Measurements”</xreftext></div><div element="section" href="#ugr.async.mt.jmx_monitoring.service.internal.queues" number="" targetptr="ugr.async.mt.jmx_monitoring.service.in
 ternal.queues"><ttl>Co-located Service Queues</ttl><xreftext>the section called “Co-located Service Queues”</xreftext></div><div element="section" href="#ugr.async.mt.jmx_monitoring.service.error" number="" targetptr="ugr.async.mt.jmx_monitoring.service.error"><ttl>Service Error Measurements</ttl><xreftext>the section called “Service Error Measurements”</xreftext></div></div><div element="section" href="#ugr.async.mt.jmx_monitoring.client" number="5.1.1.2" targetptr="ugr.async.mt.jmx_monitoring.client"><ttl>Application Client information</ttl><xreftext>Section 5.1.1.2, “Application Client information”</xreftext><div element="section" href="#ugr.async.mt.jmx_monitoring.client.measures" number="" targetptr="ugr.async.mt.jmx_monitoring.client.measures"><ttl/><xreftext>the section called “”</xreftext></div><div element="section" href="#ugr.async.mt.jmx_monitoring.client.error" number="" targetptr="ugr.async.mt.jmx_monitoring.client.erro
 r"><ttl>Client Error Measurements</ttl><xreftext>the section called “Client Error Measurements”</xreftext></div></div></div><div element="section" href="#ugr.async.mt.jmx_sampling" number="5.1.2" targetptr="ugr.async.mt.jmx_sampling"><ttl>Logging Sampled JMX information at intervals</ttl><xreftext>Section 5.1.2, “Logging Sampled JMX information at intervals”</xreftext><div element="section" href="#ugr.async.mt.jmx_sampling.configuring" number="5.1.2.1" targetptr="ugr.async.mt.jmx_sampling.configuring"><ttl>Configuring JVM to run the monitor</ttl><xreftext>Section 5.1.2.1, “Configuring JVM to run the monitor”</xreftext></div><div element="section" href="#ugr.async.mt.jmx_sampling.standalone" number="5.1.2.2" targetptr="ugr.async.mt.jmx_sampling.standalone"><ttl>Running the Monitor program standalone</ttl><xreftext>Section 5.1.2.2, “Running the Monitor program standalone”</xreftext></div><div element="section" href="#ugr.async.m
 t.jmx_sampling.output" number="5.1.2.3" targetptr="ugr.async.mt.jmx_sampling.output"><ttl>Monitoring output</ttl><xreftext>Section 5.1.2.3, “Monitoring output”</xreftext></div></div></div><div element="section" href="#ugr.async.mt.tuning" number="5.2" targetptr="ugr.async.mt.tuning"><ttl>Tuning</ttl><xreftext>Section 5.2, “Tuning”</xreftext><div element="section" href="#ugr.async.mt.tuning.approach" number="5.2.1" targetptr="ugr.async.mt.tuning.approach"><ttl>Tuning procedure</ttl><xreftext>Section 5.2.1, “Tuning procedure”</xreftext></div><div element="section" href="#ugr.async.mt.tuning.settings" number="5.2.2" targetptr="ugr.async.mt.tuning.settings"><ttl>Tuning Settings</ttl><xreftext>Section 5.2.2, “Tuning Settings”</xreftext></div></div><div element="section" href="#ugr.async.mt.limits" number="5.3" targetptr="ugr.async.mt.limits"><ttl>Limitations</ttl><xreftext>Section 5.3, “Limitations”</xreftext></div>
 </div><div element="chapter" href="#ugr.async.camel.driver" number="6" targetptr="ugr.async.camel.driver"><ttl>Asynchronous Scaleout Camel Driver</ttl><xreftext>Chapter 6, <i xmlns:xlink="http://www.w3.org/1999/xlink">Asynchronous Scaleout Camel Driver</i></xreftext><div element="section" href="#ugr.async.camel.driver.component.overview" number="6.1" targetptr="ugr.async.camel.driver.component.overview"><ttl>Overview</ttl><xreftext>Section 6.1, “Overview”</xreftext></div><div element="section" href="#ugr.async.camel.driver.component" number="6.2" targetptr="ugr.async.camel.driver.component"><ttl>How does it work?</ttl><xreftext>Section 6.2, “How does it work?”</xreftext></div><div element="section" href="#ugr.async.camel.driver.uri.format" number="6.3" targetptr="ugr.async.camel.driver.uri.format"><ttl>URI Format</ttl><xreftext>Section 6.3, “URI Format”</xreftext></div><div element="section" href="#ugr.async.camel.driver.sample" numb
 er="6.4" targetptr="ugr.async.camel.driver.sample"><ttl>Sample</ttl><xreftext>Section 6.4, “Sample”</xreftext></div><div element="section" href="#ugr.async.camel.driver.implementation" number="6.5" targetptr="ugr.async.camel.driver.implementation"><ttl>Implementation</ttl><xreftext>Section 6.5, “Implementation”</xreftext></div></div></div>
\ No newline at end of file
+<div element="book" href="#d0e2" number="" lang="en"><ttl>UIMA Asynchronous Scaleout</ttl><xreftext>UIMA Asynchronous Scaleout</xreftext><div element="chapter" href="#ugr.async.ov" number="1" targetptr="ugr.async.ov"><ttl>Overview - Asynchronous Scaleout</ttl><xreftext>Chapter 1, <i xmlns:xlink="http://www.w3.org/1999/xlink">Overview - Asynchronous Scaleout</i></xreftext><div element="section" href="#ugr.async.ov.terminology" number="1.1" targetptr="ugr.async.ov.terminology"><ttl>Terminology</ttl><xreftext>Section 1.1, “Terminology”</xreftext></div><div element="section" href="#ugr.async.ov.as_vs_cpm" number="1.2" targetptr="ugr.async.ov.as_vs_cpm"><ttl>AS versus CPM</ttl><xreftext>Section 1.2, “AS versus CPM”</xreftext></div><div element="section" href="#ugr.async.ov.design_goals" number="1.3" targetptr="ugr.async.ov.design_goals"><ttl>Design goals for Asynchronous Scaleout</ttl><xreftext>Section 1.3, “Design goals for Asynchronous Scale
 out”</xreftext></div><div element="section" href="#ugr.async.ov.concepts" number="1.4" targetptr="ugr.async.ov.concepts"><ttl>AS Concepts</ttl><xreftext>Section 1.4, “AS Concepts”</xreftext><div element="section" href="#ugr.async.ov.concepts.threading" number="1.4.1" targetptr="ugr.async.ov.concepts.threading"><ttl>User written components and multi-threading</ttl><xreftext>Section 1.4.1, “Threading”</xreftext></div><div element="section" href="#ugr.async.ov.concepts.wrapping" number="1.4.2" targetptr="ugr.async.ov.concepts.wrapping"><ttl>AS Component wrapping</ttl><xreftext>Section 1.4.2, “AS Component wrapping”</xreftext><obj element="figure" href="#ugr.async.ov.fig.wrapAE" number="1.1" targetptr="ugr.async.ov.fig.wrapAE"><ttl>AS Primitive Wrapper</ttl><xreftext>Figure 1.1, “AS Primitive Wrapper”</xreftext></obj><obj element="figure" href="#ugr.async.ov.fig.wrapAAE" number="1.2" targetptr="ugr.async.ov.fig.wrapAAE"><t
 tl>AS Aggregate wrapper</ttl><xreftext>Figure 1.2, “AS Aggregate wrapper”</xreftext></obj></div><div element="section" href="#ugr.async.ov.concepts.deploying" number="1.4.3" targetptr="ugr.async.ov.concepts.deploying"><ttl>Deployment alternatives</ttl><xreftext>Section 1.4.3, “Deployment alternatives”</xreftext><div element="section" href="#ugr.async.ov.concepts.deploying.multiples" number="1.4.3.1" targetptr="ugr.async.ov.concepts.deploying.multiples"><ttl>Configuring multiple instances of components</ttl><xreftext>Section 1.4.3.1, “Multiple Instances”</xreftext></div><div element="section" href="#ugr.async.ov.concepts.deploying.queues" number="1.4.3.2" targetptr="ugr.async.ov.concepts.deploying.queues"><ttl>Queues</ttl><xreftext>Section 1.4.3.2, “Queues”</xreftext></div><div element="section" href="#ugr.async.ov.concepts.deployment_descriptors" number="1.4.3.3" targetptr="ugr.async.ov.concepts.deployment_descriptors"><ttl
 >Deployment Descriptors</ttl><xreftext>Section 1.4.3.3, “Deployment Descriptors”</xreftext><div element="section" href="#ugr.async.ov.concepts.deployment_descriptors.aggregate" number="" targetptr="ugr.async.ov.concepts.deployment_descriptors.aggregate"><ttl>Deploying UIMA aggregates</ttl><xreftext>the section called “Deploying UIMA aggregates”</xreftext></div></div></div><div element="section" href="#ugr.async.ov.concepts.first_limits" number="1.4.4" targetptr="ugr.async.ov.concepts.first_limits"><ttl>Current design limitations</ttl><xreftext>Section 1.4.4, “Limits”</xreftext><div element="section" href="#ugr.async.ov.concepts.first_limits.sofa_mapping" number="1.4.4.1" targetptr="ugr.async.ov.concepts.first_limits.sofa_mapping"><ttl>Sofa Mapping limits</ttl><xreftext>Section 1.4.4.1, “Sofa Mapping limits”</xreftext></div><div element="section" href="#ugr.async.ov.concepts.first_limits.parameter_overriding" number="1.4.4.2" t
 argetptr="ugr.async.ov.concepts.first_limits.parameter_overriding"><ttl>Parameter Overriding limits</ttl><xreftext>Section 1.4.4.2, “Parameter Overriding limits”</xreftext></div><div element="section" href="#ugr.async.ov.concepts.first_limits.resource_sharing" number="1.4.4.3" targetptr="ugr.async.ov.concepts.first_limits.resource_sharing"><ttl>Resource Sharing limits</ttl><xreftext>Section 1.4.4.3, “Resource Sharing limits”</xreftext></div><div element="section" href="#ugr.async.ov.concepts.first_limits.service_descriptors" number="1.4.4.4" targetptr="ugr.async.ov.concepts.first_limits.service_descriptors"><ttl>Use of service descriptors inside AS Aggregates</ttl><xreftext>Section 1.4.4.4, “Use of service descriptors inside AS Aggregates”</xreftext></div></div><div element="section" href="#ugr.async.ov.concepts.first_limits.compatibility" number="1.4.5" targetptr="ugr.async.ov.concepts.first_limits.compatibility"><ttl>Compatibility wit
 h earlier version of remoting and scaleout</ttl><xreftext>Section 1.4.5, “Compatibility”</xreftext></div></div><div element="section" href="#ugr.async.ov.concepts.application" number="1.5" targetptr="ugr.async.ov.concepts.application"><ttl>Application Concepts</ttl><xreftext>Section 1.5, “Application Concepts”</xreftext><div element="section" href="#ugr.async.ov.concepts.application.api" number="1.5.1" targetptr="ugr.async.ov.concepts.application.api"><ttl>Application API</ttl><xreftext>Section 1.5.1, “Application API”</xreftext></div><div element="section" href="#ugr.async.ov.concepts.collection_process_complete" number="1.5.2" targetptr="ugr.async.ov.concepts.collection_process_complete"><ttl>Collection Process Complete</ttl><xreftext>Section 1.5.2, “Collection Process Complete”</xreftext></div></div><div element="section" href="#ugr.async.ov.concepts.mc" number="1.6" targetptr="ugr.async.ov.concepts.mc"><ttl>Monitoring a
 nd Controlling an AS application</ttl><xreftext>Section 1.6, “Monitoring &amp; Controlling”</xreftext></div><div element="section" href="#ugr.async.ov.concepts.jms_descriptor" number="1.7" targetptr="ugr.async.ov.concepts.jms_descriptor"><ttl>JMS Service Descriptor</ttl><xreftext>Section 1.7, “JMS Service Descriptor”</xreftext></div><div element="section" href="#ugr.async.ov.concepts.lifecycle" number="1.8" targetptr="ugr.async.ov.concepts.lifecycle"><ttl>Life cycle</ttl><xreftext>Section 1.8, “Life cycle”</xreftext></div></div><div element="chapter" href="#ugr.async.eh" number="2" targetptr="ugr.async.eh"><ttl>Error Handling for Asynchronous Scaleout</ttl><xreftext>Chapter 2, <i xmlns:xlink="http://www.w3.org/1999/xlink">Error Handling for Asynchronous Scaleout</i></xreftext><div element="section" href="#ugr.async.eh.basic" number="2.1" targetptr="ugr.async.eh.basic"><ttl>Basic concepts</ttl><xreftext>Section 2.1, “Basic con
 cepts”</xreftext></div><div element="section" href="#ugr.async.eh.incoming_commands" number="2.2" targetptr="ugr.async.eh.incoming_commands"><ttl>Associating Errors with incoming commands</ttl><xreftext>Section 2.2, “Associating Errors with incoming commands”</xreftext><div element="section" href="#ugr.asynch.eh.cas_multipliers" number="2.2.1" targetptr="ugr.asynch.eh.cas_multipliers"><ttl>Error handling for CASes generated in an Aggregate by CAS Multipliers</ttl><xreftext>Section 2.2.1, “Error handling - CAS Multipliers”</xreftext></div></div><div element="section" href="#ugr.async.eh.error_handling_overview" number="2.3" targetptr="ugr.async.eh.error_handling_overview"><ttl>Error handling overview</ttl><xreftext>Section 2.3, “Error handling overview”</xreftext><obj element="figure" href="#ugr.async.eh.fig.basic_eh_chain" number="2.1" targetptr="ugr.async.eh.fig.basic_eh_chain"><ttl>Basic error handling chain for AS Aggregates for
  errors from delegates</ttl><xreftext>Figure 2.1, “Basic error handling chain for AS Aggregates for errors from delegates”</xreftext></obj><obj element="figure" href="#ugr.async.eh.fig.basic_eh_chain_prim" number="2.2" targetptr="ugr.async.eh.fig.basic_eh_chain_prim"><ttl>Basic error handling chain for AS Primitives</ttl><xreftext>Figure 2.2, “Basic error handling chain for AS Primitives”</xreftext></obj></div><div element="section" href="#ugr.async.eh.error_results" number="2.4" targetptr="ugr.async.eh.error_results"><ttl>Error results</ttl><xreftext>Section 2.4, “Error results”</xreftext></div><div element="section" href="#ugr.async.eh.aggregate_managed" number="2.5" targetptr="ugr.async.eh.aggregate_managed"><ttl>Error Recovery actions</ttl><xreftext>Section 2.5, “Error Recovery actions”</xreftext><div element="section" href="#ugr.async.eh.aggregate_managed.actions" number="2.5.1" targetptr="ugr.async.eh.aggregate_manage
 d.actions"><ttl>Aggregate Error Actions</ttl><xreftext>Section 2.5.1, “Aggregate Error Actions”</xreftext><div element="section" href="#ugr.async.eh.aggregate_managed.actions.retry" number="2.5.1.1" targetptr="ugr.async.eh.aggregate_managed.actions.retry"><ttl>Retry</ttl><xreftext>Section 2.5.1.1, “Retry”</xreftext></div><div element="section" href="#ugr.async.eh.aggregate_disable" number="2.5.1.2" targetptr="ugr.async.eh.aggregate_disable"><ttl>Disable Action</ttl><xreftext>Section 2.5.1.2, “Disable Action”</xreftext><obj element="figure" href="#ugr.async.eh.fig.disable" number="2.3" targetptr="ugr.async.eh.fig.disable"><ttl>Disable action</ttl><xreftext>Figure 2.3, “Disable action”</xreftext></obj></div><div element="section" href="#ugr.async.eh.aggregate_managed.actions.continue" number="2.5.1.3" targetptr="ugr.async.eh.aggregate_managed.actions.continue"><ttl>Continue Option on Delegate Process CAS Failures</ttl><xrefte
 xt>Section 2.5.1.3, “Continue Option on Delegate Process CAS Failures”</xreftext></div></div></div><div element="section" href="#ugr.async.eh.errors_passed_up.thresholds" number="2.6" targetptr="ugr.async.eh.errors_passed_up.thresholds"><ttl>Thresholds for Terminate and Disable</ttl><xreftext>Section 2.6, “Thresholds for Terminate and Disable”</xreftext></div><div element="section" href="#ugr.async.eh.terminate" number="2.7" targetptr="ugr.async.eh.terminate"><ttl>Terminate Action</ttl><xreftext>Section 2.7, “Terminate Action”</xreftext><obj element="figure" href="#ugr.async.eh.fig.terminate" number="2.4" targetptr="ugr.async.eh.fig.terminate"><ttl>Terminate action</ttl><xreftext>Figure 2.4, “Terminate action”</xreftext></obj></div><div element="section" href="#ugr.async.eh.commands_allowed_actions" number="2.8" targetptr="ugr.async.eh.commands_allowed_actions"><ttl>Commands and allowed actions</ttl><xreftext>Section 2.8
 , “Commands and allowed actions”</xreftext><obj element="table" href="#ugr.async.eh.table.error_actions_by_command" number="2.1" targetptr="ugr.async.eh.table.error_actions_by_command"><ttl>Error actions by command type</ttl><xreftext>Table 2.1, “Error actions by command type”</xreftext></obj></div></div><div element="chapter" href="#ugr.ref.async.deploy" number="3" targetptr="ugr.ref.async.deploy"><ttl>Asynchronous Scaleout Deployment Descriptor</ttl><xreftext>Chapter 3, <i xmlns:xlink="http://www.w3.org/1999/xlink">Asynchronous Scaleout Deployment Descriptor</i></xreftext><div element="section" href="#ugr.ref.async.deploy.descriptor_organization" number="3.1" targetptr="ugr.ref.async.deploy.descriptor_organization"><ttl>Descriptor Organization</ttl><xreftext>Section 3.1, “Descriptor Organization”</xreftext></div><div element="section" href="#ugr.ref.async.deploy.descriptor" number="3.2" targetptr="ugr.ref.async.deploy.descriptor"><ttl
 >Deployment Descriptor</ttl><xreftext>Section 3.2, “Deployment Descriptor”</xreftext></div><div element="section" href="#ugr.ref.async.deploy.descriptor.caspool" number="3.3" targetptr="ugr.ref.async.deploy.descriptor.caspool"><ttl>CAS Pool</ttl><xreftext>Section 3.3, “CAS Pool”</xreftext></div><div element="section" href="#ugr.ref.async.deploy.descriptor.service" number="3.4" targetptr="ugr.ref.async.deploy.descriptor.service"><ttl>Service</ttl><xreftext>Section 3.4, “Service”</xreftext></div><div element="section" href="#ugr.ref.async.deploy.descriptor.custom" number="3.5" targetptr="ugr.ref.async.deploy.descriptor.custom"><ttl>Customizing the deployment</ttl><xreftext>Section 3.5, “Customizing the deployment”</xreftext></div><div element="section" href="#ugr.ref.async.deploy.descriptor.input_queue" number="3.6" targetptr="ugr.ref.async.deploy.descriptor.input_queue"><ttl>Input Queue</ttl><xreftext>Section 3.6, “I
 nput Queue”</xreftext></div><div element="section" href="#ugr.ref.async.deploy.descriptor.top_descriptor" number="3.7" targetptr="ugr.ref.async.deploy.descriptor.top_descriptor"><ttl>Top level Analysis Engine descriptor</ttl><xreftext>Section 3.7, “Top Level AE Descriptor”</xreftext></div><div element="section" href="#ugr.ref.async.deploy.descriptor.environment_variables" number="3.8" targetptr="ugr.ref.async.deploy.descriptor.environment_variables"><ttl>Setting Environment Variables</ttl><xreftext>Section 3.8, “Setting Environment Variables”</xreftext></div><div element="section" href="#ugr.ref.async.deploy.descriptor.ae" number="3.9" targetptr="ugr.ref.async.deploy.descriptor.ae"><ttl>Analysis Engine</ttl><xreftext>Section 3.9, “Analysis Engine”</xreftext></div><div element="section" href="#ugr.ref.async.deploy.descriptor.errorconfig" number="3.10" targetptr="ugr.ref.async.deploy.descriptor.errorconfig"><ttl>Error Configuration d
 escriptors</ttl><xreftext>Section 3.10, “Error Configuration descriptors”</xreftext></div><div element="section" href="#ugr.ref.async.deploy.descriptor.errorconfig.defaults" number="3.11" targetptr="ugr.ref.async.deploy.descriptor.errorconfig.defaults"><ttl>Error Configuration defaults</ttl><xreftext>Section 3.11, “Error Configuration defaults”</xreftext></div></div><div element="chapter" href="#ugr.ref.async.api" number="4" targetptr="ugr.ref.async.api"><ttl>Asynchronous Scaleout Application Interface</ttl><xreftext>Chapter 4, <i xmlns:xlink="http://www.w3.org/1999/xlink">Asynchronous Scaleout Application Interface</i></xreftext><div element="section" href="#ugr.ref.async.api.organization" number="4.1" targetptr="ugr.ref.async.api.organization"><ttl>Asynchronous Client API Overview</ttl><xreftext>Section 4.1, “Async Client API”</xreftext></div><div element="section" href="#ugr.ref.async.api.descriptor" number="4.2" targetptr="ugr.re
 f.async.api.descriptor"><ttl>The UimaAsynchronousEngine Interface</ttl><xreftext>Section 4.2, “The UimaAsynchronousEngine Interface”</xreftext></div><div element="section" href="#ugr.ref.async.context.map" number="4.3" targetptr="ugr.ref.async.context.map"><ttl>Application Context Map</ttl><xreftext>Section 4.3, “Application Context Map”</xreftext></div><div element="section" href="#ugr.ref.async.callback.listener" number="4.4" targetptr="ugr.ref.async.callback.listener"><ttl>Status Callback Listener</ttl><xreftext>Section 4.4, “Status Callback Listener”</xreftext></div><div element="section" href="#ugr.ref.async.error.status" number="4.5" targetptr="ugr.ref.async.error.status"><ttl>Error Results</ttl><xreftext>Section 4.5, “Error Results”</xreftext></div><div element="section" href="#ugr.ref.async.api.usage" number="4.6" targetptr="ugr.ref.async.api.usage"><ttl>Asynchronous Client API Usage Scenarios</ttl><xreftext>Section
  4.6, “Asynchronous Client API Usage Scenarios”</xreftext><div element="section" href="#ugr.ref.async.api.usage_initialize" number="4.6.1" targetptr="ugr.ref.async.api.usage_initialize"><ttl>Instantiating a Client API Object</ttl><xreftext>Section 4.6.1, “Instantiating a Client API Object”</xreftext></div><div element="section" href="#ugr.ref.async.api.usage_callservice" number="4.6.2" targetptr="ugr.ref.async.api.usage_callservice"><ttl>Calling an Existing Service</ttl><xreftext>Section 4.6.2, “Calling an Existing Service”</xreftext></div><div element="section" href="#ugr.ref.async.api.usage_getresults" number="4.6.3" targetptr="ugr.ref.async.api.usage_getresults"><ttl>Retrieving Asynchronous Results</ttl><xreftext>Section 4.6.3, “Retrieving Asynchronous Results”</xreftext></div><div element="section" href="#ugr.ref.async.api.usage_deployservice" number="4.6.4" targetptr="ugr.ref.async.api.usage_deployservice"><ttl>Deployi
 ng a Service with the Client API</ttl><xreftext>Section 4.6.4, “Deploying a Service with the Client API”</xreftext></div></div><div element="section" href="#ugr.ref.async.api.usage_undeployservice" number="4.7" targetptr="ugr.ref.async.api.usage_undeployservice"><ttl>Undeploying a Service with the Client API</ttl><xreftext>Section 4.7, “Undeploying a Service with the Client API”</xreftext></div><div element="section" href="#ugr.ref.async.api.sample.code" number="4.8" targetptr="ugr.ref.async.api.sample.code"><ttl>Sample Code</ttl><xreftext>Section 4.8, “Sample Code”</xreftext></div></div><div element="chapter" href="#ugr.async.mt" number="5" targetptr="ugr.async.mt"><ttl>Monitoring and Tuning</ttl><xreftext>Chapter 5, <i xmlns:xlink="http://www.w3.org/1999/xlink">Monitoring and Tuning</i></xreftext><div element="section" href="#ugr.async.mt.monitoring" number="5.1" targetptr="ugr.async.mt.monitoring"><ttl>Monitoring</ttl><xreftext>Se
 ction 5.1, “Monitoring”</xreftext><div element="section" href="#ugr.async.mt.jmx_monitoring" number="5.1.1" targetptr="ugr.async.mt.jmx_monitoring"><ttl>JMX Information from UIMA AS</ttl><xreftext>Section 5.1.1, “JMX Information from UIMA AS”</xreftext><div element="section" href="#ugr.async.mt.jmx_monitoring.service" number="5.1.1.1" targetptr="ugr.async.mt.jmx_monitoring.service"><ttl>UIMA AS Services JMX measures</ttl><xreftext>Section 5.1.1.1, “UIMA AS Services JMX measures”</xreftext><div element="section" href="#ugr.async.mt.jmx_monitoring.constant.service" number="" targetptr="ugr.async.mt.jmx_monitoring.constant.service"><ttl>Service information</ttl><xreftext>the section called “Service information”</xreftext></div><div element="section" href="#ugr.async.mt.jmx_monitoring.service.performance" number="" targetptr="ugr.async.mt.jmx_monitoring.service.performance"><ttl>Service Performance Measurements</ttl><xreftext>the 
 section called “Service Performance Measurements”</xreftext></div><div element="section" href="#ugr.async.mt.jmx_monitoring.service.internal.queues" number="" targetptr="ugr.async.mt.jmx_monitoring.service.internal.queues"><ttl>Co-located Service Queues</ttl><xreftext>the section called “Co-located Service Queues”</xreftext></div><div element="section" href="#ugr.async.mt.jmx_monitoring.service.error" number="" targetptr="ugr.async.mt.jmx_monitoring.service.error"><ttl>Service Error Measurements</ttl><xreftext>the section called “Service Error Measurements”</xreftext></div></div><div element="section" href="#ugr.async.mt.jmx_monitoring.client" number="5.1.1.2" targetptr="ugr.async.mt.jmx_monitoring.client"><ttl>Application Client information</ttl><xreftext>Section 5.1.1.2, “Application Client information”</xreftext><div element="section" href="#ugr.async.mt.jmx_monitoring.client.measures" number="" targetptr="ugr.async.mt.jmx_monito
 ring.client.measures"><ttl/><xreftext>the section called “”</xreftext></div><div element="section" href="#ugr.async.mt.jmx_monitoring.client.error" number="" targetptr="ugr.async.mt.jmx_monitoring.client.error"><ttl>Client Error Measurements</ttl><xreftext>the section called “Client Error Measurements”</xreftext></div></div></div><div element="section" href="#ugr.async.mt.jmx_sampling" number="5.1.2" targetptr="ugr.async.mt.jmx_sampling"><ttl>Logging Sampled JMX information at intervals</ttl><xreftext>Section 5.1.2, “Logging Sampled JMX information at intervals”</xreftext><div element="section" href="#ugr.async.mt.jmx_sampling.configuring" number="5.1.2.1" targetptr="ugr.async.mt.jmx_sampling.configuring"><ttl>Configuring JVM to run the monitor</ttl><xreftext>Section 5.1.2.1, “Configuring JVM to run the monitor”</xreftext></div><div element="section" href="#ugr.async.mt.jmx_sampling.standalone" number="5.1.2.2" targetptr="ugr.asy
 nc.mt.jmx_sampling.standalone"><ttl>Running the Monitor program standalone</ttl><xreftext>Section 5.1.2.2, “Running the Monitor program standalone”</xreftext></div><div element="section" href="#ugr.async.mt.jmx_sampling.output" number="5.1.2.3" targetptr="ugr.async.mt.jmx_sampling.output"><ttl>Monitoring output</ttl><xreftext>Section 5.1.2.3, “Monitoring output”</xreftext></div></div></div><div element="section" href="#ugr.async.mt.tuning" number="5.2" targetptr="ugr.async.mt.tuning"><ttl>Tuning</ttl><xreftext>Section 5.2, “Tuning”</xreftext><div element="section" href="#ugr.async.mt.tuning.approach" number="5.2.1" targetptr="ugr.async.mt.tuning.approach"><ttl>Tuning procedure</ttl><xreftext>Section 5.2.1, “Tuning procedure”</xreftext></div><div element="section" href="#ugr.async.mt.tuning.settings" number="5.2.2" targetptr="ugr.async.mt.tuning.settings"><ttl>Tuning Settings</ttl><xreftext>Section 5.2.2, “Tuning Set
 tings”</xreftext></div></div><div element="section" href="#ugr.async.mt.limits" number="5.3" targetptr="ugr.async.mt.limits"><ttl>Limitations</ttl><xreftext>Section 5.3, “Limitations”</xreftext></div></div><div element="chapter" href="#ugr.async.camel.driver" number="6" targetptr="ugr.async.camel.driver"><ttl>Asynchronous Scaleout Camel Driver</ttl><xreftext>Chapter 6, <i xmlns:xlink="http://www.w3.org/1999/xlink">Asynchronous Scaleout Camel Driver</i></xreftext><div element="section" href="#ugr.async.camel.driver.component.overview" number="6.1" targetptr="ugr.async.camel.driver.component.overview"><ttl>Overview</ttl><xreftext>Section 6.1, “Overview”</xreftext></div><div element="section" href="#ugr.async.camel.driver.component" number="6.2" targetptr="ugr.async.camel.driver.component"><ttl>How does it work?</ttl><xreftext>Section 6.2, “How does it work?”</xreftext></div><div element="section" href="#ugr.async.camel.driver.uri.
 format" number="6.3" targetptr="ugr.async.camel.driver.uri.format"><ttl>URI Format</ttl><xreftext>Section 6.3, “URI Format”</xreftext></div><div element="section" href="#ugr.async.camel.driver.sample" number="6.4" targetptr="ugr.async.camel.driver.sample"><ttl>Sample</ttl><xreftext>Section 6.4, “Sample”</xreftext></div><div element="section" href="#ugr.async.camel.driver.implementation" number="6.5" targetptr="ugr.async.camel.driver.implementation"><ttl>Implementation</ttl><xreftext>Section 6.5, “Implementation”</xreftext></div></div></div>
\ No newline at end of file