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 2012/01/06 22:18:02 UTC

svn commit: r1228415 - /uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/jmx/JmxManager.java

Author: cwiklik
Date: Fri Jan  6 21:18:02 2012
New Revision: 1228415

URL: http://svn.apache.org/viewvc?rev=1228415&view=rev
Log:
UIMA-2316 synchronized access to MBeanServer

Modified:
    uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/jmx/JmxManager.java

Modified: uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/jmx/JmxManager.java
URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/jmx/JmxManager.java?rev=1228415&r1=1228414&r2=1228415&view=diff
==============================================================================
--- uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/jmx/JmxManager.java (original)
+++ uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/jmx/JmxManager.java Fri Jan  6 21:18:02 2012
@@ -43,25 +43,27 @@ public class JmxManager implements JmxMa
    * @param aDomain
    */
   public void unregisterDomainObjects(String aDomain) {
-    if (!isInitialized()) {
-      return;
-    }
-    try {
-      Set set = getMBeansInDomain(aDomain);
-      Iterator it = set.iterator();
-      while (it.hasNext()) {
-        ObjectName on = (ObjectName) it.next();
-        try {
-          unregisterMBean(on);
-        } catch (Exception e) {
-        } // Dont care if there is an exception
+    //  use class level locking to make sure one thread at time executes the code
+    synchronized(JmxManager.class) {
+      if (!isInitialized()) {
+        return;
+      }
+      try {
+        Set set = getMBeansInDomain(aDomain);
+        Iterator it = set.iterator();
+        while (it.hasNext()) {
+          ObjectName on = (ObjectName) it.next();
+          try {
+            unregisterMBean(on);
+          } catch (Exception e) {
+          } // Dont care if there is an exception
+        }
+      } catch (Exception e) {
+        UIMAFramework.getLogger().logrb(Level.WARNING, JmxMBeanAgent.class.getName(),
+                "unregisterDomainObjects", LOG_RESOURCE_BUNDLE,
+                "UIMA_JMX_failed_to_register_mbean__WARNING", e);
       }
-    } catch (Exception e) {
-      UIMAFramework.getLogger().logrb(Level.WARNING, JmxMBeanAgent.class.getName(),
-              "unregisterDomainObjects", LOG_RESOURCE_BUNDLE,
-              "UIMA_JMX_failed_to_register_mbean__WARNING", e);
     }
-
   }
 
   private Set getMBeansInDomain(String aDomain) throws Exception {
@@ -90,10 +92,13 @@ public class JmxManager implements JmxMa
     }
 
     try {
-      if (((MBeanServer) platformMBeanServer).isRegistered(aName)) {
-        ((MBeanServer) platformMBeanServer).unregisterMBean(aName);
+      //  use class level locking to make sure one thread at time executes the code
+      synchronized(JmxManager.class) {
+        if (((MBeanServer) platformMBeanServer).isRegistered(aName)) {
+          ((MBeanServer) platformMBeanServer).unregisterMBean(aName);
+        }
+        ((MBeanServer) platformMBeanServer).registerMBean(anMBeanToRegister, aName);
       }
-      ((MBeanServer) platformMBeanServer).registerMBean(anMBeanToRegister, aName);
     } catch (Exception e) {
       UIMAFramework.getLogger()
               .logrb(Level.WARNING, JmxMBeanAgent.class.getName(), "registerMBean",
@@ -112,20 +117,22 @@ public class JmxManager implements JmxMa
     return true;
   }
 
-  public synchronized void unregisterMBean(ObjectName anMBeanToUnregister) {
-    if (!isInitialized()) {
-      return;
-    }
-    try {
-      if (((MBeanServer) platformMBeanServer).isRegistered(anMBeanToUnregister)) {
-        ((MBeanServer) platformMBeanServer).unregisterMBean(anMBeanToUnregister);
+  public void unregisterMBean(ObjectName anMBeanToUnregister) {
+    //  use class level locking to make sure one thread at time executes the code
+    synchronized(JmxManager.class) {
+      if (!isInitialized()) {
+        return;
+      }
+      try {
+        if (((MBeanServer) platformMBeanServer).isRegistered(anMBeanToUnregister)) {
+          ((MBeanServer) platformMBeanServer).unregisterMBean(anMBeanToUnregister);
+        }
+      } catch (Exception e) {
+        UIMAFramework.getLogger()
+                .logrb(Level.WARNING, JmxMBeanAgent.class.getName(), "registerMBean",
+                        LOG_RESOURCE_BUNDLE, "UIMA_JMX_failed_to_register_mbean__WARNING", e);
       }
-    } catch (Exception e) {
-      UIMAFramework.getLogger()
-              .logrb(Level.WARNING, JmxMBeanAgent.class.getName(), "registerMBean",
-                      LOG_RESOURCE_BUNDLE, "UIMA_JMX_failed_to_register_mbean__WARNING", e);
     }
-
   }
 
   public void destroy() throws Exception {