Author: eae
Date: Fri May  4 13:48:26 2012
New Revision: 1333962

URL: http://svn.apache.org/viewvc?rev=1333962&view=rev
Log:
UIMA-2398 - add automatic retry option

Modified:
    
uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/aae/jms_adapter/JmsAnalysisEngineServiceStub.java

Modified: 
uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/aae/jms_adapter/JmsAnalysisEngineServiceStub.java
URL: 
http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/aae/jms_adapter/JmsAnalysisEngineServiceStub.java?rev=1333962&r1=1333961&r2=1333962&view=diff
==============================================================================
--- 
uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/aae/jms_adapter/JmsAnalysisEngineServiceStub.java
 (original)
+++ 
uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/aae/jms_adapter/JmsAnalysisEngineServiceStub.java
 Fri May  4 13:48:26 2012
@@ -76,6 +76,8 @@ public class JmsAnalysisEngineServiceStu
 
   public static final String PARAM_CPC_TIMEOUT = "cpctimeout";
 
+  public static final String PARAM_RETRY = "retry";
+
   public static final String PARAM_BIN_SERIALIZTION = "binary_serialization";
 
   public static final String PARAM_IGNORE_PROCESS_ERRORS = 
"ignore_process_errors";
@@ -86,6 +88,8 @@ public class JmsAnalysisEngineServiceStu
 
   private boolean ignoreErrors = false;
 
+  private int retry = 0;
+
   private UimaAsynchronousEngine uimaEEEngine;
 
   public JmsAnalysisEngineServiceStub(Resource owner, Parameter[] parameters)
@@ -111,6 +115,9 @@ public class JmsAnalysisEngineServiceStu
         getMetaTimeout = Integer.parseInt(parameters[i].getValue());
       } else if (PARAM_CPC_TIMEOUT.equalsIgnoreCase(parameters[i].getName())) {
         cpcTimeout = Integer.parseInt(parameters[i].getValue());
+      } else if (PARAM_RETRY.equalsIgnoreCase(parameters[i].getName())) {
+        retry = Integer.parseInt(parameters[i].getValue());
+        retry = (retry < 0) ? 0 : retry;
       } else if 
(PARAM_IGNORE_PROCESS_ERRORS.equalsIgnoreCase(parameters[i].getName())) {
         ignoreErrors = parameters[i].getValue().equalsIgnoreCase("true");
       }
@@ -170,11 +177,20 @@ public class JmsAnalysisEngineServiceStu
    * @see 
org.apache.uima.analysis_engine.service.AnalysisEngineServiceStub#callProcess(CAS)
    */
   public void callProcess(CAS aCAS) throws ResourceServiceException {
-    try {
-      uimaEEEngine.sendAndReceiveCAS(aCAS);
-    } catch (ResourceProcessException e) {
-      if (!ignoreErrors)
-        throw new ResourceServiceException(e);
+    int tries = retry;
+    while (true) {
+      try {
+        uimaEEEngine.sendAndReceiveCAS(aCAS);
+        return;
+      } catch (Throwable e) {
+        if (tries-- > 0) {
+          UIMAFramework.getLogger().log(Level.INFO, "Retrying callProcess on 
remote AS service...");
+          continue;
+        }
+        if (!ignoreErrors) {
+          throw new ResourceServiceException(e);
+        }
+      }
     }
   }
 


Reply via email to