Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source.
   * Copyright 2008, Red Hat Middleware LLC, and individual contributors
   * as indicated by the @author tags. See the copyright.txt file in the
   * distribution for a full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
  * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.jboss.embedded.adapters;
 
 import java.util.Date;
 
A pojo that creates a legacy jmx kernel ala the jboss-4.x server bootstrap. This is used to support the SARDeployer and mbean integration.

Author(s):
Scott.Stark@jboss.org
bill@jboss.org
adrian@jboss.org
Version:
$Revision:$
 
 public class JMXKernel extends JBossObject implements JMXKernelMBeanNotificationEmitter
 {
   
The JMX MBeanServer which will serve as our communication bus.
 
    private MBeanServer mbeanServer;
    private ServiceController controller;
    private Kernel kernel;
    private ServerConfig serverConfig;
    private boolean started;
 
    {
       return this.;
    }
 
    public MBeanServer getMbeanServer()
    {
       return ;
    }
 
    public void setKernel(Kernel kernel)
    {
       this. = kernel;
    }
 
    public ServerConfig getServerConfig()
    {
       return ;
    }
 
    public void setServerConfig(ServerConfig serverConfig)
    {
       this. = serverConfig;
    }

   
We don't want to override platforms default mechanism for creating MBeanServer so lets just do it ourselves

Parameters:
domain the domain
Returns:
the mbeanserver
Throws:
java.lang.Exception for any error
   private MBeanServer createMBeanServer(String domainthrows Exception
   {
      MBeanServer server;
      // Check if we'll use the platform MBeanServer or instantiate our own
      if (.getPlatformMBeanServer() == true)
      {
         // jdk1.5+
         ClassLoader cl = Thread.currentThread().getContextClassLoader();
         Class clazz = cl.loadClass("java.lang.management.ManagementFactory");
         Class[] sig = null;
         Method method = clazz.getMethod("getPlatformMBeanServer"sig);
         Object[] args = null;
         server = (MBeanServermethod.invoke(nullargs);
         // Tell the MBeanServerLocator to point to this mbeanServer
         MBeanServerLocator.setJBoss(server);
         /* If the LazyMBeanServer was used, we need to reset to the jboss
         MBeanServer to use our implementation for the jboss services.
         */
         server = LazyMBeanServer.resetToJBossServer(server);
      }
      else
      {
         // Create our own MBeanServer
         server = MBeanServerFactory.createMBeanServer(domain);
      }
      .debug("Created MBeanServer: " + server);
      return server;
   }
   public static void setupUrlHandlers()
   {
      String pkgs = System.getProperty("java.protocol.handler.pkgs");
      if (pkgs == null || pkgs.trim().length() == 0)
      {
         pkgs = "org.jboss.net.protocol";
         System.setProperty("java.protocol.handler.pkgs"pkgs);
      }
      else if (!pkgs.contains("org.jboss.net.protocol"))
      {
         pkgs += "|org.jboss.net.protocol";
         System.setProperty("java.protocol.handler.pkgs"pkgs);
      }
      //Field field = URL.class.getDeclaredField("")
      //URL.setURLStreamHandlerFactory(new URLStreamHandlerFactory());
   }
   public void start() throws Exception
   {
      setupUrlHandlers();
       = createMBeanServer("jboss");
      MBeanServerLocator.setJBoss();
       = new ServiceController();
      .registerMBean(new ObjectName("jboss.system:service=ServiceController"));
      // Register mbeanServer components
       = true;
   }

   
Stop the mbeans

Throws:
java.lang.IllegalStateException - if not started.
   public void stop() throws IllegalStateException
   {
      if (.isTraceEnabled())
         .trace("stop caller:"new Throwable("Here"));
      if (!)
         throw new IllegalStateException("Server not started");
      .debug("Shutting down all services");
      shutdownServices();
      // Make sure all mbeans are unregistered
      removeMBeans();
   }

   
The shutdownServices method calls the one and only ServiceController to shut down all the mbeans registered with it.
   protected void shutdownServices()
   {
      try
      {
         // get the deployed objects from ServiceController
         .shutdown();
      }
      catch (Exception e)
      {
         Throwable t = JMXExceptionDecoder.decode(e);
         .error("Failed to shutdown services"t);
      }
   }

   
The removeMBeans method uses the mbean mbeanServer to unregister all the mbeans registered here.
   protected void removeMBeans()
   {
      try
      {
      }
      catch (Exception e)
      {
         Throwable t = JMXExceptionDecoder.decode(e);
         .error("Failed to unregister mbeans"t);
      }
   }
   public void addNotificationListener(NotificationListener listenerNotificationFilter filterObject handback)
   {
      .addNotificationListener(listenerfilterhandback);
   }
           throws ListenerNotFoundException
   {
   }
   public void removeNotificationListener(NotificationListener listenerNotificationFilter filterObject handback)
           throws ListenerNotFoundException
   {
      .removeNotificationListener(listenerfilterhandback);
   }
   {
   }
   public void sendNotification(Notification notification)
   {
      .sendNotification(notification);
   }
   public void runGarbageCollector()
   {
      //To change body of implemented methods use File | Settings | File Templates.
   }
   public void runFinalization()
   {
      //To change body of implemented methods use File | Settings | File Templates.
   }
   public void traceMethodCalls(Boolean flag)
   {
      //To change body of implemented methods use File | Settings | File Templates.
   }
   public void traceInstructions(Boolean flag)
   {
      //To change body of implemented methods use File | Settings | File Templates.
   }
   public Date getStartDate()
   {
      return null;  //To change body of implemented methods use File | Settings | File Templates.
   }
   public String getVersion()
   {
      return null;  //To change body of implemented methods use File | Settings | File Templates.
   }
   public String getVersionName()
   {
      return null;  //To change body of implemented methods use File | Settings | File Templates.
   }
   public String getBuildNumber()
   {
      return null;  //To change body of implemented methods use File | Settings | File Templates.
   }
   public String getBuildJVM()
   {
      return null;  //To change body of implemented methods use File | Settings | File Templates.
   }
   public String getBuildOS()
   {
      return null;  //To change body of implemented methods use File | Settings | File Templates.
   }
   public String getBuildID()
   {
      return null;  //To change body of implemented methods use File | Settings | File Templates.
   }
   public String getBuildDate()
   {
      return null;  //To change body of implemented methods use File | Settings | File Templates.
   }
   public boolean isInShutdown()
   {
      return false;  //To change body of implemented methods use File | Settings | File Templates.
   }
   public void init(Properties propsthrows IllegalStateExceptionException
   {
      //To change body of implemented methods use File | Settings | File Templates.
   }
   {
      return null;  //To change body of implemented methods use File | Settings | File Templates.
   }
   public boolean isStarted()
   {
      return false;  //To change body of implemented methods use File | Settings | File Templates.
   }
   public void shutdown() throws IllegalStateException
   {
      //To change body of implemented methods use File | Settings | File Templates.
   }
   public void exit(int exitcode)
   {
      //To change body of implemented methods use File | Settings | File Templates.
   }
   public void exit()
   {
      //To change body of implemented methods use File | Settings | File Templates.
   }
   public void halt(int exitcode)
   {
      //To change body of implemented methods use File | Settings | File Templates.
   }
   public void halt()
   {
      //To change body of implemented methods use File | Settings | File Templates.
   }
   {
   }
   public String getVersionNumber()
   {
      return "";
   }
New to GrepCode? Check out our FAQ X