You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by cw...@apache.org on 2014/03/04 21:46:10 UTC

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

Author: cwiklik
Date: Tue Mar  4 20:46:10 2014
New Revision: 1574193

URL: http://svn.apache.org/r1574193
Log:
UIMA-3665 Modified to manage lifecycle of shared instance of uima-as client

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=1574193&r1=1574192&r2=1574193&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 Mar  4 20:46:10 2014
@@ -40,6 +40,7 @@ package org.apache.uima.aae.jms_adapter;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.uima.UIMAFramework;
 import org.apache.uima.aae.client.UimaAsBaseCallbackListener;
@@ -103,6 +104,8 @@ public class JmsAnalysisEngineServiceStu
   @SuppressWarnings("rawtypes")
   private static HashMap enginemap = new HashMap();
 
+  private static AtomicInteger instanceCounter = new AtomicInteger();
+  
   private UimaAsynchronousEngine uimaEEEngine;
 
   @SuppressWarnings("unchecked")
@@ -115,6 +118,8 @@ public class JmsAnalysisEngineServiceStu
     int getMetaTimeout = 0;
     int cpcTimeout = 0;
 
+    instanceCounter.incrementAndGet();
+    
     String binary_serialization = null;
     for (int i = 0; i < parameters.length; i++) {
       if (PARAM_BROKER_URL.equalsIgnoreCase(parameters[i].getName())) {
@@ -239,12 +244,19 @@ public class JmsAnalysisEngineServiceStu
    * @see org.apache.uima.resource.service.impl.ResourceServiceStub#destroy()
    */
   public void destroy() {
-    try {
-      uimaEEEngine.stop();
+	  int howManyInstancesLeft = 0;
+	  try {
+    	if ( (howManyInstancesLeft = instanceCounter.decrementAndGet()) == 0 ) {
+        	uimaEEEngine.stop();
+    	}
     } catch (Exception e) {
       if (UIMAFramework.getLogger().isLoggable(Level.WARNING)) {
         UIMAFramework.getLogger().log(Level.WARNING, e.getMessage(), e);
       }
+    } finally {
+    	if ( howManyInstancesLeft == 0 ) {
+        	enginemap.clear();
+    	}
     }
   }