Bug 381357 - Register the platform MBeanServer by default
diff --git a/org.eclipse.gemini.management/src/main/java/org/eclipse/gemini/management/Activator.java b/org.eclipse.gemini.management/src/main/java/org/eclipse/gemini/management/Activator.java
index bef07eb..8a1a489 100644
--- a/org.eclipse.gemini.management/src/main/java/org/eclipse/gemini/management/Activator.java
+++ b/org.eclipse.gemini.management/src/main/java/org/eclipse/gemini/management/Activator.java
@@ -15,6 +15,7 @@
package org.eclipse.gemini.management;
+import java.lang.management.ManagementFactory;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -136,7 +137,8 @@
public void start(BundleContext bundleContext) throws Exception {
objectNameTranslator = DefaultObjectNameTranslator.initialiseObjectNameTranslator(bundleContext);
createObjectNames();
- this.bundleContext = bundleContext;
+ this.bundleContext = bundleContext;
+ registerDefaultMBeanServer();
this.mbeanServiceTracker = new ServiceTracker<MBeanServer, Object>(this.bundleContext, MBeanServer.class, new MBeanServiceTracker());
LOGGER.fine("Awaiting initial MBeanServer service registration");
this.mbeanServiceTracker.open();
@@ -145,6 +147,17 @@
private ObjectName translateObjectName(String objectName) throws MalformedObjectNameException {
return this.objectNameTranslator.translate(new ObjectName(objectName));
}
+
+ private void registerDefaultMBeanServer () {
+ if ("false".equals(bundleContext.getProperty("register.default.mbeanserver"))) {
+ return;
+ }
+
+ ServiceReference<MBeanServer> ref = bundleContext.getServiceReference(MBeanServer.class);
+ if (ref == null) {
+ bundleContext.registerService(MBeanServer.class.getCanonicalName(), ManagementFactory.getPlatformMBeanServer(), null);
+ }
+ }
/**