HBASE-16723 RMI registry is not destroyed after stopping JMX Connector Server (Pankaj Kumar)
This commit is contained in:
parent
09a31bd1e9
commit
f3270d44c3
|
@ -27,8 +27,10 @@ import org.apache.hadoop.hbase.coprocessor.*;
|
|||
import java.io.IOException;
|
||||
import java.lang.management.ManagementFactory;
|
||||
import java.rmi.registry.LocateRegistry;
|
||||
import java.rmi.registry.Registry;
|
||||
import java.rmi.server.RMIClientSocketFactory;
|
||||
import java.rmi.server.RMIServerSocketFactory;
|
||||
import java.rmi.server.UnicastRemoteObject;
|
||||
import java.util.HashMap;
|
||||
|
||||
import javax.management.MBeanServer;
|
||||
|
@ -36,8 +38,6 @@ import javax.management.remote.JMXConnectorServer;
|
|||
import javax.management.remote.JMXConnectorServerFactory;
|
||||
import javax.management.remote.JMXServiceURL;
|
||||
import javax.management.remote.rmi.RMIConnectorServer;
|
||||
import javax.rmi.ssl.SslRMIClientSocketFactory;
|
||||
import javax.rmi.ssl.SslRMIServerSocketFactory;
|
||||
|
||||
/**
|
||||
* Pluggable JMX Agent for HBase(to fix the 2 random TCP ports issue
|
||||
|
@ -61,6 +61,7 @@ public class JMXListener implements Coprocessor {
|
|||
* we only load regionserver coprocessor on master
|
||||
*/
|
||||
private static JMXConnectorServer JMX_CS = null;
|
||||
private Registry rmiRegistry = null;
|
||||
|
||||
public static JMXServiceURL buildJMXServiceURL(int rmiRegistryPort,
|
||||
int rmiConnectorPort) throws IOException {
|
||||
|
@ -128,7 +129,7 @@ public class JMXListener implements Coprocessor {
|
|||
}
|
||||
|
||||
// Create the RMI registry
|
||||
LocateRegistry.createRegistry(rmiRegistryPort);
|
||||
rmiRegistry = LocateRegistry.createRegistry(rmiRegistryPort);
|
||||
// Retrieve the PlatformMBeanServer.
|
||||
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
|
||||
|
||||
|
@ -147,17 +148,25 @@ public class JMXListener implements Coprocessor {
|
|||
LOG.info("ConnectorServer started!");
|
||||
} catch (IOException e) {
|
||||
LOG.error("fail to start connector server!", e);
|
||||
// deregister the RMI registry
|
||||
if (rmiRegistry != null) {
|
||||
UnicastRemoteObject.unexportObject(rmiRegistry, true);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void stopConnectorServer() throws IOException {
|
||||
synchronized(JMXListener.class) {
|
||||
synchronized (JMXListener.class) {
|
||||
if (JMX_CS != null) {
|
||||
JMX_CS.stop();
|
||||
LOG.info("ConnectorServer stopped!");
|
||||
JMX_CS = null;
|
||||
}
|
||||
// deregister the RMI registry
|
||||
if (rmiRegistry != null) {
|
||||
UnicastRemoteObject.unexportObject(rmiRegistry, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue