]> source.dussan.org Git - sonarqube.git/commitdiff
Added check for mbean registration
authorStephane Gamard <stephane.gamard@searchbox.com>
Mon, 11 Aug 2014 08:20:12 +0000 (10:20 +0200)
committerStephane Gamard <stephane.gamard@searchbox.com>
Mon, 11 Aug 2014 08:38:40 +0000 (10:38 +0200)
server/process/sonar-process/src/main/java/org/sonar/process/JmxUtils.java
server/process/sonar-process/src/main/java/org/sonar/process/MonitoredProcess.java

index b88973e45c9d3d98beb5523bd6447539d39d5d71..bdceac6420faef2e5378a943019287a55c656ee0 100644 (file)
@@ -44,6 +44,9 @@ public class JmxUtils {
   public static void registerMBean(Object mbean, String name) {
     try {
       MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
+      if(mbeanServer.isRegistered(objectName(name))){
+        mbeanServer.unregisterMBean(objectName(name));
+      }
       mbeanServer.registerMBean(mbean, objectName(name));
     } catch (RuntimeException re) {
       throw re;
@@ -51,4 +54,15 @@ public class JmxUtils {
       throw new IllegalStateException("Fail to register JMX MBean named " + name, e);
     }
   }
+
+  public static void deRegisterMBean(String name) {
+    try {
+      MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
+      mbeanServer.unregisterMBean(objectName(name));
+    } catch (RuntimeException re) {
+      throw re;
+    } catch (Exception e) {
+      throw new IllegalStateException("Fail to register JMX MBean named " + name, e);
+    }
+  }
 }
index 3dde4e021c5fba53958a3b71750816babe245a3a..1f3579b8e790ca9da66db256f085636d08fc91ab 100644 (file)
@@ -113,6 +113,7 @@ public abstract class MonitoredProcess implements ProcessMXBean {
         pingTask.cancel(true);
         pingTask = null;
       }
+      JmxUtils.deRegisterMBean(name);
       try {
         doTerminate();
       } catch (Exception e) {