summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/process/sonar-process/src/main/java/org/sonar/process/JmxUtils.java14
-rw-r--r--server/process/sonar-process/src/main/java/org/sonar/process/MonitoredProcess.java1
2 files changed, 15 insertions, 0 deletions
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) {