org.rhq.enterprise.server.plugin.pc
Class ClassLoaderManager

java.lang.Object
  extended by org.rhq.enterprise.server.plugin.pc.ClassLoaderManager

public class ClassLoaderManager
extends java.lang.Object

Manages the classloaders created and used by the master plugin container and all plugins.

Author:
John Mazzitelli

Constructor Summary
ClassLoaderManager(java.util.Map<java.net.URL,? extends ServerPluginDescriptorType> plugins, java.lang.ClassLoader rootClassLoader, java.io.File tmpDir)
          Creates the object that will manage all classloaders for the plugins deployed in the server.
 
Method Summary
 int getNumberOfServerPluginClassLoaders()
          Returns the total number of plugin classloaders that have been created and managed.
 java.lang.ClassLoader getRootClassLoader()
          Returns the classloader that should be the ancestor (i.e.
 java.util.Map<PluginKey,java.lang.ClassLoader> getServerPluginClassLoaders()
          Returns a shallow copy of the plugin classloaders keyed on plugin key.
 java.lang.ClassLoader obtainServerPluginClassLoader(PluginKey pluginKey)
          Returns a plugin classloader (creating it if necessary).
 void shutdown()
          Cleans up this object and all classloaders it has created.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ClassLoaderManager

public ClassLoaderManager(java.util.Map<java.net.URL,? extends ServerPluginDescriptorType> plugins,
                          java.lang.ClassLoader rootClassLoader,
                          java.io.File tmpDir)
Creates the object that will manage all classloaders for the plugins deployed in the server.

Parameters:
plugins - maps a plugin URL to that plugin's descriptor
rootClassLoader - the classloader at the top of the classloader hierarchy
tmpDir - where the classloaders can write out the jars that are embedded in the plugin jars
Method Detail

shutdown

public void shutdown()
Cleans up this object and all classloaders it has created.


toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

getRootClassLoader

public java.lang.ClassLoader getRootClassLoader()
Returns the classloader that should be the ancestor (i.e. top most parent) of all plugin classloaders.

Returns:
the root plugin classloader for all plugins

obtainServerPluginClassLoader

public java.lang.ClassLoader obtainServerPluginClassLoader(PluginKey pluginKey)
                                                    throws java.lang.Exception
Returns a plugin classloader (creating it if necessary).

Parameters:
pluginKey - the plugin whose classloader is to be created
Returns:
the plugin classloader
Throws:
java.lang.Exception

getNumberOfServerPluginClassLoaders

public int getNumberOfServerPluginClassLoaders()
Returns the total number of plugin classloaders that have been created and managed. This method is here just to support a plugin container management MBean.

Returns:
number of plugin classloaders that are currently created and being used

getServerPluginClassLoaders

public java.util.Map<PluginKey,java.lang.ClassLoader> getServerPluginClassLoaders()
Returns a shallow copy of the plugin classloaders keyed on plugin key. This method is here just to support a plugin container management MBean. Do not use this method to obtain a plugin's classloader, instead, you want to use #obtainServerPluginClassLoader(String).

Returns:
all plugin classloaders currently assigned to plugins (will never be null)


Copyright © 2008-2009 Red Hat, Inc.. All Rights Reserved.