You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by ea...@apache.org on 2008/10/22 18:21:58 UTC

svn commit: r707118 - in /incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main: java/org/apache/uima/aae/ java/org/apache/uima/aae/controller/ java/org/apache/uima/aae/error/handler/ java/org/apache/uima/aae/handler/input/ java/org/apache/uima/a...

Author: eae
Date: Wed Oct 22 09:21:58 2008
New Revision: 707118

URL: http://svn.apache.org/viewvc?rev=707118&view=rev
Log: (empty)

Modified:
    incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/AsynchAECasManager_impl.java
    incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/InputChannel.java
    incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java
    incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AnalysisEngineController.java
    incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/BaseAnalysisEngineController.java
    incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint.java
    incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint_impl.java
    incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAnalysisEngineController_impl.java
    incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/error/handler/ProcessCasErrorHandler.java
    incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/handler/input/ProcessRequestHandler_impl.java
    incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/handler/input/ProcessResponseHandler.java
    incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/message/AsynchAEMessage.java
    incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/message/UimaMessageValidator.java
    incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/resources/uimaee_messages.properties

Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/AsynchAECasManager_impl.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/AsynchAECasManager_impl.java?rev=707118&r1=707117&r2=707118&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/AsynchAECasManager_impl.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/AsynchAECasManager_impl.java Wed Oct 22 09:21:58 2008
@@ -88,12 +88,14 @@
 
   public void initialize(int aCasPoolSize, String aContextName,
           Properties aPerformanceTuningSettings) throws Exception {
+ 
     UIMAFramework.getLogger(CLASS_NAME).logrb(Level.CONFIG, CLASS_NAME.getName(),
-            "getEndpointConnection", UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE,
+            "initialize", UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE,
             "UIMAEE_primary_cas_pool_init__CONFIG", new Object[] { aCasPoolSize, aContextName });
     // Create CAS Pool for incoming messages
     casManager.defineCasPool(aContextName, aCasPoolSize, aPerformanceTuningSettings);
     contextName = aContextName;
+    
     setInitialized(true);
     if (aPerformanceTuningSettings != null) {
       System.out.println("CasManager Initialized Cas Pool:" + aContextName + ". Cas Pool Size:"

Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/InputChannel.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/InputChannel.java?rev=707118&r1=707117&r2=707118&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/InputChannel.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/InputChannel.java Wed Oct 22 09:21:58 2008
@@ -32,4 +32,9 @@
 	public ServiceInfo getServiceInfo();
 	public boolean isStopped();
   public int getConcurrentConsumerCount();
+  public void destroyListener( String anEndpointName, String aDelegateKey );
+  public void createListener( String aDelegateKey ) throws Exception;
+  public boolean isFailed(String aDelegateKey);
+  public boolean isListenerForDestination( String anEndpointName);
+
 }

Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java?rev=707118&r1=707117&r2=707118&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AggregateAnalysisEngineController_impl.java Wed Oct 22 09:21:58 2008
@@ -32,6 +32,7 @@
 import org.apache.uima.UIMAFramework;
 import org.apache.uima.aae.AsynchAECasManager;
 import org.apache.uima.aae.InProcessCache;
+import org.apache.uima.aae.InputChannel;
 import org.apache.uima.aae.UIMAEE_Constants;
 import org.apache.uima.aae.UimaClassFactory;
 import org.apache.uima.aae.InProcessCache.CacheEntry;
@@ -1023,6 +1024,12 @@
 
 						delegateStatMap.put( key, delegateStatsArray);					
 					}
+					// If the service has stopped dont bother doing anything else. The service
+					// may have been stopped because listener connection could not be established.
+					if ( isStopped() ) {
+					  return;
+					}
+					
 					dispatchMetadataRequest(delegateEndpoints[i]);
 				}
 			}
@@ -1502,14 +1509,26 @@
 	public void retryProcessCASRequest(String aCasReferenceId, Endpoint anEndpoint, boolean addEndpointToCache) throws AsynchAEException
 	{
 		Endpoint endpoint = null;
-		if ( getInProcessCache().getEndpoint(anEndpoint.getEndpoint(), aCasReferenceId) != null)
+    String key = lookUpDelegateKey(anEndpoint.getEndpoint());
+
+    if ( getInProcessCache().getEndpoint(anEndpoint.getEndpoint(), aCasReferenceId) != null)
 		{
 			endpoint = getInProcessCache().getEndpoint(anEndpoint.getEndpoint(), aCasReferenceId);
+      Endpoint masterEndpoint = lookUpEndpoint(key, true);
+      //  check if the master endpoint destination has changed. This can be a case when
+      //  a new temp queue is created when the previous temp queue is destroyed due to
+      //  a broken connection.
+      if ( masterEndpoint.getDestination() != null ) {
+        //  Make sure that we use the current destination for replies
+        if (! masterEndpoint.getDestination().toString().equals( endpoint.getDestination().toString())) {
+          //  Override the endopoint reply-to destination with the master destination
+          endpoint.setDestination(masterEndpoint.getDestination());
+        }
+      }
 		}
 		else
 		{
 			endpoint = anEndpoint;
-			String key = lookUpDelegateKey(anEndpoint.getEndpoint());
 			endpoint = lookUpEndpoint(key, true);
 			getInProcessCache().addEndpoint(endpoint, aCasReferenceId);
 		}
@@ -1785,8 +1804,8 @@
 			getCasManagerWrapper().initialize("AggregateContext");
 			aggregateMetadata.setTypeSystem(getCasManagerWrapper().getMetadata().getTypeSystem());
 			aggregateMetadata.setTypePriorities(getCasManagerWrapper().getMetadata().getTypePriorities());
+			
 			aggregateMetadata.setFsIndexCollection(getCasManagerWrapper().getMetadata().getFsIndexCollection());
-
 		}
 		
         flowControllerContainer = 
@@ -1804,6 +1823,7 @@
 				flowControllerContainer.removeAnalysisEngines(disabledDelegateList);
 			}
 		}
+		
 		//	Before processing CASes, send notifications to all collocated delegates to
 		//	complete initialization. Currently this call forces all collocated Cas Multiplier delegates
 		//	to initialize their internal Cas Pools. CM Cas Pool is lazily initialized on 
@@ -1817,7 +1837,6 @@
 		// the controller before it is initialized.
 		latch.openLatch(getName(), isTopLevelComponent(), true);
 		initialized = true;
-		
 		//  Notify client listener that the initialization of the controller was successfull
 		notifyListenersWithInitializationStatus(null);
 	}

Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AnalysisEngineController.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AnalysisEngineController.java?rev=707118&r1=707117&r2=707118&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AnalysisEngineController.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/AnalysisEngineController.java Wed Oct 22 09:21:58 2008
@@ -197,4 +197,6 @@
   public UimaTransport getTransport(String aKey) throws Exception;
 
   public void initializeVMTransport(int parentControllerReplyConsumerCount) throws Exception;
+
+  public InputChannel getReplyInputChannel(String aDelegateKey);
 }

Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/BaseAnalysisEngineController.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/BaseAnalysisEngineController.java?rev=707118&r1=707117&r2=707118&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/BaseAnalysisEngineController.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/BaseAnalysisEngineController.java Wed Oct 22 09:21:58 2008
@@ -880,7 +880,10 @@
 	{
 		if ( !inputChannelMap.containsKey(anInputChannel.getInputQueueName()))
 		{
-			inputChannelMap.put(anInputChannel.getInputQueueName(), anInputChannel);
+      inputChannelMap.put(anInputChannel.getInputQueueName(), anInputChannel);
+      if ( inputChannelList.contains(anInputChannel)) {
+        inputChannelList.add(anInputChannel);
+      }
 		}
 	}
 	public InputChannel getInputChannel()
@@ -1769,14 +1772,25 @@
 		
 		for( int i=0; inputChannelList != null && i < inputChannelList.size(); i++ )
 		{
-			if ( ((InputChannel)inputChannelList.get(i)).getInputQueueName().equals( anEndpointName) )
-			{
-				return (InputChannel)inputChannelList.get(i);
-			}
+		  InputChannel iC = (InputChannel)inputChannelList.get(i);
+		  if ( iC.isListenerForDestination( anEndpointName)) {
+        return (InputChannel)inputChannelList.get(i);
+		  }
 		}
 		return null;
 	}
 	 
+	public InputChannel getReplyInputChannel( String aDelegateKey ) {
+    for( int i=0; inputChannelList != null && i < inputChannelList.size(); i++ )
+    {
+      if ( ((InputChannel)inputChannelList.get(i)).isFailed(aDelegateKey) )
+      {
+        return (InputChannel)inputChannelList.get(i);
+      }
+    }
+    return null;
+	  
+	}
 	/**
 	 * Callback method called the InProcessCache becomes empty meaning ALL CASes are processed.
 	 * The callback is only active when the the top level component is in the process of shutting 

Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint.java?rev=707118&r1=707117&r2=707118&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint.java Wed Oct 22 09:21:58 2008
@@ -24,6 +24,9 @@
 
 public interface Endpoint
 {
+  public static final int OK = 1;
+  public static final int FAILED = 2;
+  
 	public int getMetadataRequestTimeout();
 	public void setController( AnalysisEngineController aController);
 	public void startCheckpointTimer();
@@ -151,4 +154,7 @@
   
   public void setSerializer( String aSerializer );
  
+  public void setStatus( int aStatus);
+  
+  public int getStatus();
 }

Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint_impl.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint_impl.java?rev=707118&r1=707117&r2=707118&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint_impl.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint_impl.java Wed Oct 22 09:21:58 2008
@@ -113,6 +113,11 @@
 	//	echoed back to the client. 
 	private String endpointServer = null;
 	
+	private int status;
+	
+	public Endpoint_impl() {
+	  status = Endpoint.OK;
+	}
 	public int getCommand()
 	{
 		return command;
@@ -494,7 +499,9 @@
 	public void setIsCasMultiplier(boolean trueORfalse)
 	{
 		isCasMultiplier = trueORfalse;
-		getServiceInfo().setCASMultiplier();
+		if ( isCasMultiplier ) {
+	    getServiceInfo().setCASMultiplier();
+		}
 	}
 	public void setShadowCasPoolSize( int aPoolSize )
 	{
@@ -585,5 +592,12 @@
   public int getConcurrentReplyConsumers() {
     return concurrentReplyConsumers;
   }
+  public void setStatus( int aStatus) {
+    status = aStatus;
+  }
   
+  public int getStatus() {
+    return status;
+  }
+
 }
\ No newline at end of file

Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAnalysisEngineController_impl.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAnalysisEngineController_impl.java?rev=707118&r1=707117&r2=707118&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAnalysisEngineController_impl.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAnalysisEngineController_impl.java Wed Oct 22 09:21:58 2008
@@ -19,7 +19,6 @@
 
 package org.apache.uima.aae.controller;
 
-import java.io.ByteArrayOutputStream;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -27,17 +26,16 @@
 import org.apache.uima.aae.AsynchAECasManager;
 import org.apache.uima.aae.InProcessCache;
 import org.apache.uima.aae.UIMAEE_Constants;
-import org.apache.uima.aae.UimaSerializer;
 import org.apache.uima.aae.InProcessCache.CacheEntry;
 import org.apache.uima.aae.error.AsynchAEException;
 import org.apache.uima.aae.error.ErrorContext;
 import org.apache.uima.aae.error.ErrorHandler;
+import org.apache.uima.aae.error.ServiceShutdownException;
 import org.apache.uima.aae.jmx.JmxManagement;
 import org.apache.uima.aae.jmx.PrimitiveServiceInfo;
 import org.apache.uima.aae.jmx.ServicePerformance;
 import org.apache.uima.aae.message.AsynchAEMessage;
 import org.apache.uima.aae.message.MessageContext;
-import org.apache.uima.aae.message.UIMAMessage;
 import org.apache.uima.aae.monitor.Monitor;
 import org.apache.uima.aae.spi.transport.UimaMessage;
 import org.apache.uima.analysis_engine.AnalysisEngine;
@@ -46,7 +44,6 @@
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.impl.CASImpl;
 import org.apache.uima.cas.impl.OutOfTypeSystemData;
-import org.apache.uima.cas.impl.XmiSerializationSharedData;
 import org.apache.uima.resource.metadata.ConfigurationParameter;
 import org.apache.uima.resource.metadata.impl.ConfigurationParameter_impl;
 import org.apache.uima.util.Level;
@@ -128,17 +125,25 @@
 			}
 			
 			UIMAFramework.getLogger(CLASS_NAME).logrb(Level.CONFIG, getClass().getName(), "initialize", UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE, "UIMAEE_primitive_ctrl_init_info__CONFIG", new Object[] { analysisEnginePoolSize });
-			//	Instantiate and initialize UIMA analytics
-			for (int i = 0; i < analysisEnginePoolSize; i++)
-			{
-				AnalysisEngine ae =  UIMAFramework.produceAnalysisEngine(resourceSpecifier, paramsMap);
-				aeList.add(ae);
-				
-				//	Cache metadata once
-				if (i == 0)
-				{
-					analysisEngineMetadata = ae.getAnalysisEngineMetaData();
-				}
+
+			try {
+	      //  Instantiate and initialize UIMA analytics
+	      for (int i = 0; i < analysisEnginePoolSize; i++)
+	      {
+	        AnalysisEngine ae =  UIMAFramework.produceAnalysisEngine(resourceSpecifier, paramsMap);
+	        aeList.add(ae);
+	        
+	        //  Cache metadata once
+	        if (i == 0)
+	        {
+	          analysisEngineMetadata = ae.getAnalysisEngineMetaData();
+	        }
+	      }
+			} catch ( Exception ex1 ) {
+		     if ( isStopped()  ) {
+		        System.out.println(">>>>>>>>> Service Has Stopped ....");
+		        throw new AsynchAEException(new ServiceShutdownException());
+		      }
 			}
 			if ( serviceInfo == null )
 			{
@@ -148,40 +153,40 @@
 			serviceInfo.setAnalysisEngineInstanceCount(analysisEnginePoolSize);
 			aeInstancePool.intialize(aeList);
 
-			
-			getMonitor().setThresholds(getErrorHandlerChain().getThresholds());
-			// Initialize Cas Manager
-			if (getCasManagerWrapper() != null)
-			{
-				try
-				{
-					if (getCasManagerWrapper().isInitialized())
-					{
-						getCasManagerWrapper().addMetadata(getAnalysisEngineMetadata());
-						if (isTopLevelComponent())
-						{
-							getCasManagerWrapper().initialize("PrimitiveAEService");
-							CAS cas = getCasManagerWrapper().getNewCas("PrimitiveAEService");
-							cas.release();
-						}
-					}
-
-					// All internal components of this Primitive have been initialized. Open the latch
-					// so that this service can start processing requests.
-					latch.openLatch(getName(), isTopLevelComponent(), true);
-					
-				}
-				catch ( Exception e)
-				{
-					e.printStackTrace();
-					throw new AsynchAEException(e);
-				}
-			}
-			else
-			{
-				UIMAFramework.getLogger(CLASS_NAME).logrb(Level.CONFIG, getClass().getName(), "initialize", UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE, "UIMAEE_cas_manager_wrapper_notdefined__CONFIG", new Object[] {});
-			}
+      if ( !isStopped()  ) {
+        getMonitor().setThresholds(getErrorHandlerChain().getThresholds());
+        // Initialize Cas Manager
+        if (getCasManagerWrapper() != null)
+        {
+          try
+          {
+            if (getCasManagerWrapper().isInitialized())
+            {
+              getCasManagerWrapper().addMetadata(getAnalysisEngineMetadata());
+              if (isTopLevelComponent())
+              {
+                getCasManagerWrapper().initialize("PrimitiveAEService");
+                CAS cas = getCasManagerWrapper().getNewCas("PrimitiveAEService");
+                cas.release();
+              }
+            }
 
+            // All internal components of this Primitive have been initialized. Open the latch
+            // so that this service can start processing requests.
+            latch.openLatch(getName(), isTopLevelComponent(), true);
+            
+          }
+          catch ( Exception e)
+          {
+            e.printStackTrace();
+            throw new AsynchAEException(e);
+          }
+        }
+        else
+        {
+          UIMAFramework.getLogger(CLASS_NAME).logrb(Level.CONFIG, getClass().getName(), "initialize", UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE, "UIMAEE_cas_manager_wrapper_notdefined__CONFIG", new Object[] {});
+        }
+      }
 		}
 		catch ( AsynchAEException e)
 		{
@@ -629,6 +634,7 @@
 	
 	public void stop()
 	{
+	  System.out.println(">>>>> Stopping Controller:"+getComponentName());
 		super.stop();
 		stopInputChannel();
 		if ( aeInstancePool != null )
@@ -648,6 +654,7 @@
 			aeList.clear();
 			aeList = null;
 		}
+    System.out.println(">>>>> Done Stopping Controller:"+getComponentName());
 	}
 	
 }

Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/error/handler/ProcessCasErrorHandler.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/error/handler/ProcessCasErrorHandler.java?rev=707118&r1=707117&r2=707118&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/error/handler/ProcessCasErrorHandler.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/error/handler/ProcessCasErrorHandler.java Wed Oct 22 09:21:58 2008
@@ -35,6 +35,7 @@
 import org.apache.uima.aae.error.ErrorHandlerBase;
 import org.apache.uima.aae.error.ExpiredMessageException;
 import org.apache.uima.aae.error.InvalidMessageException;
+import org.apache.uima.aae.error.MessageTimeoutException;
 import org.apache.uima.aae.error.ServiceShutdownException;
 import org.apache.uima.aae.error.Threshold;
 import org.apache.uima.aae.error.UimaEEServiceException;
@@ -451,7 +452,10 @@
 			{
 				try
 				{
-					sendExceptionToClient( t, casReferenceId, endpoint, aController );
+				  //  Dont send TimeoutExceptions to client
+				  if ( deliverExceptionToClient(t) ) {
+				    sendExceptionToClient( t, casReferenceId, endpoint, aController );
+				  }
 				}
 				catch( Exception e) 
 				{
@@ -501,7 +505,9 @@
 		{
 			try
 			{
-				sendExceptionToClient( t, casReferenceId, endpoint, aController );
+        if ( deliverExceptionToClient(t) ) {
+          sendExceptionToClient( t, casReferenceId, endpoint, aController );
+        }
 			}
 			catch( Exception e) 
 			{
@@ -542,5 +548,11 @@
 		
 		return true;
 	}
-
+	private boolean deliverExceptionToClient( Throwable t) {
+    //  Dont send TimeOutExceptions to client
+	  if ( t instanceof UimaEEServiceException && t.getCause() != null && t.getCause() instanceof MessageTimeoutException) {
+      return false;
+    }
+    return true;
+	}
 }

Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/handler/input/ProcessRequestHandler_impl.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/handler/input/ProcessRequestHandler_impl.java?rev=707118&r1=707117&r2=707118&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/handler/input/ProcessRequestHandler_impl.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/handler/input/ProcessRequestHandler_impl.java Wed Oct 22 09:21:58 2008
@@ -729,6 +729,14 @@
                 new Object[] { getController().getName(), casReferenceId });
 		getController().releaseNextCas(casReferenceId); 
 	}
+	private void handlePingRequest(MessageContext aMessageContext) {
+	  try {
+	    getController().getOutputChannel().sendReply(AsynchAEMessage.Ping, aMessageContext.getEndpoint());
+	  } catch ( Exception e) {
+	    e.printStackTrace();
+	  }
+	  
+	}
 	
 	private void handleStopRequest(MessageContext aMessageContext)
 	{
@@ -813,10 +821,14 @@
 				{
 					handleReleaseCASRequest(messageContext);
 				}
-				else if ( AsynchAEMessage.None == payload && AsynchAEMessage.Stop == command)
-				{
-					handleStopRequest(messageContext);
-				}
+        else if ( AsynchAEMessage.None == payload && AsynchAEMessage.Stop == command)
+        {
+          handleStopRequest(messageContext);
+        }
+        else if ( AsynchAEMessage.None == payload && AsynchAEMessage.Ping == command)
+        {
+          handlePingRequest(messageContext);
+        }
 				// Handled Request
 				return;
 			}

Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/handler/input/ProcessResponseHandler.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/handler/input/ProcessResponseHandler.java?rev=707118&r1=707117&r2=707118&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/handler/input/ProcessResponseHandler.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/handler/input/ProcessResponseHandler.java Wed Oct 22 09:21:58 2008
@@ -573,6 +573,15 @@
 		getController().getMonitor().resetCountingStatistic(aDelegate, Monitor.ProcessErrorCount);
 		getController().getMonitor().resetCountingStatistic(aDelegate, Monitor.ProcessErrorRetryCount);
 	}
+	
+	private void handlePingReply( MessageContext aMessageContext ) {
+	  try {
+	    
+	  } catch ( Exception e) {
+	    e.printStackTrace();
+	  }
+	}
+	
 	public  void handle(Object anObjectToHandle) throws AsynchAEException
 	{
 		super.validate(anObjectToHandle);
@@ -642,6 +651,10 @@
 			{
 				handleACK(messageContext);
 			}
+      else if (AsynchAEMessage.None == payload && AsynchAEMessage.Ping == command)
+      {
+        handlePingReply(messageContext);
+      }
 
 			else
 			{

Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/message/AsynchAEMessage.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/message/AsynchAEMessage.java?rev=707118&r1=707117&r2=707118&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/message/AsynchAEMessage.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/message/AsynchAEMessage.java Wed Oct 22 09:21:58 2008
@@ -69,7 +69,8 @@
 	public static final int Terminate = 2003;
 	public static final int ACK = 2004;
 	public static final int ReleaseCAS = 2005;
-	public static final int Stop = 2006;
+  public static final int Stop = 2006;
+  public static final int Ping = 2007;
 	
 	
 	public static final String MessageType = "MessageType";

Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/message/UimaMessageValidator.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/message/UimaMessageValidator.java?rev=707118&r1=707117&r2=707118&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/message/UimaMessageValidator.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/message/UimaMessageValidator.java Wed Oct 22 09:21:58 2008
@@ -88,7 +88,7 @@
       int command = aMessage.getIntProperty(AsynchAEMessage.Command);
       if (command != AsynchAEMessage.Process && command != AsynchAEMessage.GetMeta
               && command != AsynchAEMessage.ReleaseCAS && command != AsynchAEMessage.Stop
-              && command != AsynchAEMessage.CollectionProcessComplete) {
+              && command != AsynchAEMessage.Ping && command != AsynchAEMessage.CollectionProcessComplete) {
         UIMAFramework.getLogger(CLASS_NAME).logrb(Level.INFO, CLASS_NAME.getName(), "validCommand",
                 UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE, "UIMAJMS_invalid_command_in_message__INFO",
                 new Object[] { command, endpointName });
@@ -118,6 +118,7 @@
       int command = aMessage.getIntProperty(AsynchAEMessage.Command);
       if (command == AsynchAEMessage.GetMeta
               || command == AsynchAEMessage.CollectionProcessComplete
+              || command == AsynchAEMessage.Ping
               || command == AsynchAEMessage.Stop || command == AsynchAEMessage.ReleaseCAS) {
         //  Payload not included in GetMeta Request
         return true;
@@ -218,6 +219,8 @@
           return "ReleaseCAS";
         case AsynchAEMessage.Stop:
           return "Stop";
+        case AsynchAEMessage.Ping:
+          return "Ping";
       }
 
     } else if (AsynchAEMessage.Payload.equals(aTypeToDecode)) {

Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/resources/uimaee_messages.properties
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/resources/uimaee_messages.properties?rev=707118&r1=707117&r2=707118&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/resources/uimaee_messages.properties (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/resources/uimaee_messages.properties Wed Oct 22 09:21:58 2008
@@ -167,3 +167,4 @@
 UIMAEE_msg_origin_added__FINEST = Controller: {0} Cached Message Origin For Cas: {1}. Message Origin: {2}
 UIMAEE_input_cas_invalid__INFO = Controller: {0} Received Invalid Request from Cas Multiplier {1} Containing Cas Id: {2}. The Parent Cas Id Is Missing. 
 UIMAEE_show_remote_delegate_serialization_INFO = >>> Controller: {0} Configured To Serialize CASes To Remote Delegate: {1} Using {2} Serialization
+UIMAEE_delegate_in_parallel_step_not_remote_WARNING = >>> Controller: {0} Delegate: {1} Not Remote But Defined In Parallel Step. Only Remote Delegates Can Be In Parallel Step.