From bf4b6be6f97ff3a420dfbd4db055f03b073ec7b2 Mon Sep 17 00:00:00 2001 From: Stephane Gamard Date: Mon, 11 Aug 2014 10:20:12 +0200 Subject: [PATCH] Added check for mbean registration --- .../src/main/java/org/sonar/process/JmxUtils.java | 14 ++++++++++++++ .../java/org/sonar/process/MonitoredProcess.java | 1 + 2 files changed, 15 insertions(+) diff --git a/server/process/sonar-process/src/main/java/org/sonar/process/JmxUtils.java b/server/process/sonar-process/src/main/java/org/sonar/process/JmxUtils.java index b88973e45c9..bdceac6420f 100644 --- a/server/process/sonar-process/src/main/java/org/sonar/process/JmxUtils.java +++ b/server/process/sonar-process/src/main/java/org/sonar/process/JmxUtils.java @@ -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); + } + } } diff --git a/server/process/sonar-process/src/main/java/org/sonar/process/MonitoredProcess.java b/server/process/sonar-process/src/main/java/org/sonar/process/MonitoredProcess.java index 3dde4e021c5..1f3579b8e79 100644 --- a/server/process/sonar-process/src/main/java/org/sonar/process/MonitoredProcess.java +++ b/server/process/sonar-process/src/main/java/org/sonar/process/MonitoredProcess.java @@ -113,6 +113,7 @@ public abstract class MonitoredProcess implements ProcessMXBean { pingTask.cancel(true); pingTask = null; } + JmxUtils.deRegisterMBean(name); try { doTerminate(); } catch (Exception e) { -- 2.39.5