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 2014/02/25 18:01:37 UTC

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

Author: eae
Date: Tue Feb 25 17:01:36 2014
New Revision: 1571744

URL: http://svn.apache.org/r1571744
Log:
UIMA-3519 optionally synchronize requests to particular service

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=1571744&r1=1571743&r2=1571744&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 Tue Feb 25 17:01:36 2014
@@ -81,12 +81,23 @@ public class JmsAnalysisEngineServiceStu
 
   public static final String PARAM_IGNORE_PROCESS_ERRORS = "ignore_process_errors";
 
+  //TODO remove synchronized access when broker overload problem fixed
+  public static final String PARAM_SYNCHRONIZED_ACCESS = "synchronized_access";
+
+  //TODO remove muxMap when broker overload problem fixed
+  private static HashMap muxmap = new HashMap();
+
+  //TODO remove staticMux when broker overload problem fixed
+  private Object staticMux = null;
+
   private Object mux = new Object();
 
   private boolean cpcReceived;
 
   private boolean ignoreErrors = false;
 
+  private boolean synchCalls = false;
+
   private int retry = 0;
 
   @SuppressWarnings("rawtypes")
@@ -123,11 +134,14 @@ public class JmsAnalysisEngineServiceStu
         retry = (retry < 0) ? 0 : retry;
       } else if (PARAM_IGNORE_PROCESS_ERRORS.equalsIgnoreCase(parameters[i].getName())) {
         ignoreErrors = parameters[i].getValue().equalsIgnoreCase("true");
+      } else if (PARAM_SYNCHRONIZED_ACCESS.equalsIgnoreCase(parameters[i].getName())) {
+        synchCalls = parameters[i].getValue().equalsIgnoreCase("true");
       }
     }
 
     if (enginemap.containsKey(brokerUrl+endpoint)) {
       uimaEEEngine = (UimaAsynchronousEngine)enginemap.get(brokerUrl+endpoint);
+      staticMux = muxmap.get(brokerUrl+endpoint);
     }
     else {
       // initialize UIMA EE Engine
@@ -152,6 +166,8 @@ public class JmsAnalysisEngineServiceStu
       uimaEEEngine.addStatusCallbackListener(this);
       uimaEEEngine.initialize(appCtxt);
       enginemap.put(brokerUrl+endpoint, uimaEEEngine);
+      staticMux = new Object();
+      muxmap.put(brokerUrl+endpoint, staticMux);
     }
 
   }
@@ -191,7 +207,14 @@ public class JmsAnalysisEngineServiceStu
     int tries = retry;
     while (true) {
       try {
-        uimaEEEngine.sendAndReceiveCAS(aCAS);
+        if (synchCalls) {
+          synchronized (staticMux) {
+            uimaEEEngine.sendAndReceiveCAS(aCAS);
+          }
+        }
+        else {
+          uimaEEEngine.sendAndReceiveCAS(aCAS);
+        }
         return;
       } catch (Throwable e) {
         if (tries-- > 0) {