From 02105300484ddfd5ca8df193541f68884e4135ea Mon Sep 17 00:00:00 2001
From: abobrov <abobrov@localhost>
Date: Mon, 20 Apr 2009 23:17:01 +0000
Subject: [PATCH] - use platform mbean server by default to allow access to the server monitoring data from VisualVM and similar monitoring tools.

---
 opends/src/server/org/opends/server/core/DirectoryServer.java |   26 ++++++++++++++++++++------
 1 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/opends/src/server/org/opends/server/core/DirectoryServer.java b/opends/src/server/org/opends/server/core/DirectoryServer.java
index c5572fb..dae0c0f 100644
--- a/opends/src/server/org/opends/server/core/DirectoryServer.java
+++ b/opends/src/server/org/opends/server/core/DirectoryServer.java
@@ -59,6 +59,7 @@
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.CopyOnWriteArraySet;
+import java.lang.management.ManagementFactory;
 
 import javax.management.MBeanServer;
 import javax.management.MBeanServerFactory;
@@ -1090,7 +1091,7 @@
 
 
   /**
-   * Performs a minimal set of JMX initialization.  This may be used by the core
+   * Performs a minimal set of JMX initialization. This may be used by the core
    * Directory Server or by command-line tools.
    *
    * @throws  InitializationException  If a problem occurs while attempting to
@@ -1101,12 +1102,25 @@
   {
     try
     {
-      // FIXME -- Should we use the plaform Mbean Server or
-      // should we use a private one ?
-      directoryServer.mBeanServer = MBeanServerFactory.newMBeanServer();
-      // directoryServer.mBeanServer =
-      //      ManagementFactory.getPlatformMBeanServer();
+      // It is recommended by ManagementFactory javadoc that the platform
+      // MBeanServer also be used to register other application managed
+      // beans besides the platform MXBeans. Try platform MBeanServer
+      // first. If it fails create a new, private, MBeanServer instance.
+      try
+      {
+        directoryServer.mBeanServer =
+          ManagementFactory.getPlatformMBeanServer();
+      }
+      catch (Exception e)
+      {
+        if (debugEnabled())
+        {
+          TRACER.debugCaught(DebugLogLevel.WARNING, e);
+        }
 
+        directoryServer.mBeanServer =
+          MBeanServerFactory.newMBeanServer();
+      }
       directoryServer.mBeans = new ConcurrentHashMap<DN,JMXMBean>();
       registerAlertGenerator(directoryServer);
     }

--
Gitblit v1.10.0