From 16e0eb720faae6548b0903a4ceef18c3f333592a Mon Sep 17 00:00:00 2001
From: lutoff <lutoff@localhost>
Date: Tue, 03 Oct 2006 06:59:43 +0000
Subject: [PATCH] In the previous implementation, each time we had a configuration change, the JMX connector **AND** the RMI registry was closed.

---
 opends/src/server/org/opends/server/protocols/jmx/RmiConnector.java         |   32 ++++++++++++++++++--------------
 opends/src/server/org/opends/server/protocols/jmx/JmxConnectionHandler.java |   10 +++++++---
 2 files changed, 25 insertions(+), 17 deletions(-)

diff --git a/opends/src/server/org/opends/server/protocols/jmx/JmxConnectionHandler.java b/opends/src/server/org/opends/server/protocols/jmx/JmxConnectionHandler.java
index 3fd9e68..3bfda41 100644
--- a/opends/src/server/org/opends/server/protocols/jmx/JmxConnectionHandler.java
+++ b/opends/src/server/org/opends/server/protocols/jmx/JmxConnectionHandler.java
@@ -505,7 +505,9 @@
       String finalizeReason, boolean closeConnections)
   {
     assert debugEnter(CLASS_NAME, "finalizeConnectionHandler");
-    rmiConnector.finalizeConnectionHandler(closeConnections);
+
+    // We should also close the RMI registry.
+    rmiConnector.finalizeConnectionHandler(closeConnections, true);
   }
 
   /**
@@ -552,7 +554,8 @@
   public void processServerShutdown(String reason)
   {
     assert debugEnter(CLASS_NAME, "processServerShutdown");
-    rmiConnector.finalizeConnectionHandler(true);
+    //  We should also close the RMI registry.
+    rmiConnector.finalizeConnectionHandler(true, true);
 
   }
 
@@ -795,7 +798,8 @@
     //
     // Stop the current connector
     // TODO Set Msg
-    this.finalizeConnectionHandler("new config", true);
+    this.rmiConnector.finalizeConnectionHandler(true,
+        (listenPort != newListenPort));
 
     //
     // set new params and update JMX attributes
diff --git a/opends/src/server/org/opends/server/protocols/jmx/RmiConnector.java b/opends/src/server/org/opends/server/protocols/jmx/RmiConnector.java
index f635fb4..9d359e4 100644
--- a/opends/src/server/org/opends/server/protocols/jmx/RmiConnector.java
+++ b/opends/src/server/org/opends/server/protocols/jmx/RmiConnector.java
@@ -30,7 +30,6 @@
 import java.rmi.RemoteException;
 import java.rmi.registry.LocateRegistry;
 import java.rmi.registry.Registry;
-import java.rmi.server.RMISocketFactory;
 import java.util.HashMap;
 
 import javax.net.ssl.SSLSocketFactory;
@@ -225,8 +224,7 @@
       if (registry == null)
       {
         rmiSsf = new OpendsRmiServerSocketFactory();
-        registry = LocateRegistry.createRegistry(registryPort,
-            RMISocketFactory.getDefaultSocketFactory(), rmiSsf);
+        registry = LocateRegistry.createRegistry(registryPort, null, rmiSsf);
       }
     }
     catch (RemoteException re)
@@ -421,8 +419,10 @@
    *            Indicates whether any established client connections
    *            associated with the connection handler should also be
    *            closed.
+   * @param stopRegistry Indicates if the RMI registry should be stopped
    */
-  public void finalizeConnectionHandler(boolean closeConnections)
+  public void finalizeConnectionHandler(
+      boolean closeConnections, boolean stopRegistry)
   {
     if (closeConnections)
     {
@@ -476,17 +476,21 @@
       assert debugException(CLASS_NAME, "finalizeConnectionHandler", e);
     }
 
-    //
-    // Close the socket
-    try
+    if (stopRegistry)
     {
-      rmiSsf.close();
+      //
+      // Close the socket
+      try
+      {
+        rmiSsf.close();
+      }
+      catch (IOException e)
+      {
+        // TODO Log an error message
+        assert debugException(CLASS_NAME, "finalizeConnectionHandler", e);
+      }
+      registry = null;
     }
-    catch (IOException e)
-    {
-      // TODO Log an error message
-      assert debugException(CLASS_NAME, "finalizeConnectionHandler", e);
-    }
-    registry = null;
+
   }
 }

--
Gitblit v1.10.0