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) {