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);
+ }
+ }
}
}