[jboss-cvs] JBossAS SVN: r103729 - trunk/system/src/main/java/org/jboss/system/server/jmx.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Apr 9 01:24:40 EDT 2010


Author: smarlow at redhat.com
Date: 2010-04-09 01:24:40 -0400 (Fri, 09 Apr 2010)
New Revision: 103729

Modified:
   trunk/system/src/main/java/org/jboss/system/server/jmx/JMXConnector.java
Log:
JBAS-7827 improve error checking

Modified: trunk/system/src/main/java/org/jboss/system/server/jmx/JMXConnector.java
===================================================================
--- trunk/system/src/main/java/org/jboss/system/server/jmx/JMXConnector.java	2010-04-09 04:46:05 UTC (rev 103728)
+++ trunk/system/src/main/java/org/jboss/system/server/jmx/JMXConnector.java	2010-04-09 05:24:40 UTC (rev 103729)
@@ -33,9 +33,13 @@
 import javax.management.remote.rmi.RMIConnectorServer;
 import javax.management.remote.rmi.RMIJRMPServerImpl;
 import javax.naming.InitialContext;
+import javax.naming.NamingException;
 import javax.naming.Reference;
 import javax.naming.StringRefAddr;
+import java.io.IOException;
 import java.lang.management.ManagementFactory;
+import java.rmi.AlreadyBoundException;
+import java.rmi.NotBoundException;
 import java.rmi.registry.LocateRegistry;
 import java.rmi.registry.Registry;
 import java.util.HashMap;
@@ -119,47 +123,66 @@
       this.hostname = hostname;
    }
 
-   public void start() throws Exception {
-      if(log.isInfoEnabled()) {
-         log.info("starting JMXConnector on host " + hostname + ":" + rmiRegistryPort);
-      }
-      DefaultClientSocketFactory clientSocketFactory = new DefaultClientSocketFactory();
-      clientSocketFactory.setBindAddress(hostname);
-      DefaultSocketFactory serverSocketFactory = new DefaultSocketFactory();
-      serverSocketFactory.setBindAddress(hostname);
-      registry = LocateRegistry.createRegistry(rmiRegistryPort, clientSocketFactory, serverSocketFactory);
-      HashMap env = new HashMap();
-      if( securityDomain != null)
-         env.put(RMIConnectorServer.AUTHENTICATOR, new JMXConnectorAuthenticator( securityDomain) );
-      rmiServer = new RMIJRMPServerImpl(rmiServerPort, clientSocketFactory, serverSocketFactory, env);
-      JMXServiceURL url = new JMXServiceURL("service:jmx:rmi://" + hostname);
-      adapter = new RMIConnectorServer(url, env, rmiServer, mbeanServer);
-      adapter.start();
-      url = adapter.getAddress();
-      registry.bind(RMI_BIND_NAME, rmiServer.toStub());
+   public void start()  {
+      try {
+         if(log.isInfoEnabled()) {
+            log.info("starting JMXConnector on host " + hostname + ":" + rmiRegistryPort);
+         }
+         DefaultClientSocketFactory clientSocketFactory = new DefaultClientSocketFactory();
+         clientSocketFactory.setBindAddress(hostname);
+         DefaultSocketFactory serverSocketFactory = new DefaultSocketFactory();
+         serverSocketFactory.setBindAddress(hostname);
+         registry = LocateRegistry.createRegistry(rmiRegistryPort, clientSocketFactory, serverSocketFactory);
+         HashMap env = new HashMap();
+         if( securityDomain != null)
+            env.put(RMIConnectorServer.AUTHENTICATOR, new JMXConnectorAuthenticator( securityDomain) );
+         rmiServer = new RMIJRMPServerImpl(rmiServerPort, clientSocketFactory, serverSocketFactory, env);
+         JMXServiceURL url = new JMXServiceURL("service:jmx:rmi://" + hostname);
+         adapter = new RMIConnectorServer(url, env, rmiServer, mbeanServer);
+         adapter.start();
+         url = adapter.getAddress();
+         registry.rebind(RMI_BIND_NAME, rmiServer.toStub());
 
-      if(log.isDebugEnabled()) {
-         log.debug("started JMXConnector (" + url.toString() + ")" +
-            (securityDomain!=null ? " domain=" + securityDomain : "") );
+         if(log.isDebugEnabled()) {
+            log.debug("started JMXConnector (" + url.toString() + ")" +
+               (securityDomain!=null ? " domain=" + securityDomain : "") );
+         }
+
+         // For legacy access, bind a JMXAdapter to the JNDI names
+         Reference reference = new Reference(MBeanServerConnection.class.getName(), JMXAdapter.class.getName(), null);
+         reference.add(new StringRefAddr("JMXServiceURL", url.toString()));
+         Util.rebind(context, JNDI_BIND_NAME, reference);
+         Util.rebind(context, LEGACY_BIND_NAME, reference);
+         //Object test = Util.lookup(context, JNDI_BIND_NAME, MBeanServerConnection.class);
+         //log.info("test = " + test);
+         SecurityFactory.prepare();
+      } catch (IOException e) {
+         log.error("Could not start JMXConnector", e);
+      } catch (NamingException e) {
+         log.error("couldn't bind legacy adaptor (" +JNDI_BIND_NAME + " or " + LEGACY_BIND_NAME + ")", e);
       }
-
-      // For legacy access, bind a JMXAdapter to the JNDI names
-      Reference reference = new Reference(MBeanServerConnection.class.getName(), JMXAdapter.class.getName(), null);
-      reference.add(new StringRefAddr("JMXServiceURL", url.toString()));
-      Util.rebind(context, JNDI_BIND_NAME, reference);
-      Util.rebind(context, LEGACY_BIND_NAME, reference);
-      //Object test = Util.lookup(context, JNDI_BIND_NAME, MBeanServerConnection.class);
-      //log.info("test = " + test);
-      //
-      SecurityFactory.prepare();
    }
 
-   public void stop() throws Exception {
-      registry.unbind(RMI_BIND_NAME);
-      adapter.stop();
-      Util.unbind(context, JNDI_BIND_NAME);
-      Util.unbind(context, LEGACY_BIND_NAME);
-      SecurityFactory.release();
+   public void stop()  {
+      try {
+         registry.unbind(RMI_BIND_NAME);
+         Util.unbind(context, JNDI_BIND_NAME);
+         Util.unbind(context, LEGACY_BIND_NAME);
+      } catch (NotBoundException e) {
+         log.error("connector was not bound ("+RMI_BIND_NAME+") to registry", e);
+      } catch (IOException e) {
+         log.error("couldn't unbind ("+RMI_BIND_NAME+") connector", e);
+      } catch (NamingException e) {
+         log.error("couldn't unbind legacy adaptor (" +JNDI_BIND_NAME + " or " + LEGACY_BIND_NAME + ")", e);
+      }
+      finally {
+         try {
+            SecurityFactory.release();
+            adapter.stop();
+         } catch (IOException e) {
+            log.error("Could not stop connector", e);
+         }
+      }
    }
 
 }
\ No newline at end of file




More information about the jboss-cvs-commits mailing list