summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephane Gamard <stephane.gamard@searchbox.com>2014-08-11 10:20:12 +0200
committerStephane Gamard <stephane.gamard@searchbox.com>2014-08-11 10:38:40 +0200
commitbf4b6be6f97ff3a420dfbd4db055f03b073ec7b2 (patch)
tree85f07d81a735e41bdbd7c7f734603c26c490a3fc
parentf1c87c9f0411ae6067408c9d0625c2e7f1f4d79a (diff)
downloadsonarqube-bf4b6be6f97ff3a420dfbd4db055f03b073ec7b2.tar.gz
sonarqube-bf4b6be6f97ff3a420dfbd4db055f03b073ec7b2.zip
Added check for mbean registration
-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) {