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 2009/07/13 22:25:28 UTC

svn commit: r793697 - /incubator/uima/sandbox/trunk/uima-as/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseUIMAAsynchronousEngineCommon_impl.java

Author: cwiklik
Date: Mon Jul 13 20:25:28 2009
New Revision: 793697

URL: http://svn.apache.org/viewvc?rev=793697&view=rev
Log:
UIMA-1435 Added SharedConnection class

Modified:
    incubator/uima/sandbox/trunk/uima-as/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseUIMAAsynchronousEngineCommon_impl.java

Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseUIMAAsynchronousEngineCommon_impl.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseUIMAAsynchronousEngineCommon_impl.java?rev=793697&r1=793696&r2=793697&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseUIMAAsynchronousEngineCommon_impl.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseUIMAAsynchronousEngineCommon_impl.java Mon Jul 13 20:25:28 2009
@@ -2369,4 +2369,45 @@
 	{
 	}
 
+	// This class is used to share JMS Connection by many instances of UIMA AS 
+	// clients deployed in the same JVM. 
+	public class SharedConnection {
+	  private Connection connection;
+	  private int clientCount;
+	  private Object mux = new Object();
+	  
+	  public Connection getConnection() {
+      return connection;
+    }
+
+    public void setConnection(Connection connection) {
+      this.connection = connection;
+    }
+
+    public  void incrementClientCount() {
+      synchronized(mux) {
+        clientCount++;
+      }
+    }
+    public void decrementClientCount() {
+      synchronized(mux) {
+        clientCount--;
+      }
+    }
+    public int getClientCount() {
+      synchronized(mux) {
+        return  clientCount;
+      }
+    }
+    public synchronized void destroy() {
+      if ( getClientCount() == 0 && connection != null ) {
+        try {
+          System.out.println("UIMA AS Client - Shared JMS Connection Closed");
+          connection.close();
+        } catch (Exception e) { /*ignore*/ }
+      } else {
+        System.out.println("UIMA AS Client - Shared JMS Connection Not Closed. Current Client Instance Count"+getClientCount());
+      }
+	  }
+	}
 }