org.apache.hadoop.hbase.util
Class DynamicClassLoader
java.lang.Object
java.lang.ClassLoader
java.security.SecureClassLoader
java.net.URLClassLoader
org.apache.hadoop.hbase.util.ClassLoaderBase
org.apache.hadoop.hbase.util.DynamicClassLoader
@InterfaceAudience.Private
public class DynamicClassLoader
- extends ClassLoaderBase
This is a class loader that can load classes dynamically from new
jar files under a configured folder. The paths to the jar files are
converted to URLs, and URLClassLoader logic is actually used to load
classes. This class loader always uses its parent class loader
to load a class at first. Only if its parent class loader
can not load a class, we will try to load it using the logic here.
The configured folder can be a HDFS path. In this case, the jar files
under that folder will be copied to local at first under ${hbase.local.dir}/jars/.
The local copy will be updated if the remote copy is updated, according to its
last modified timestamp.
We can't unload a class already loaded. So we will use the existing
jar files we already know to load any class which can't be loaded
using the parent class loader. If we still can't load the class from
the existing jar files, we will check if any new jar file is added,
if so, we will load the new jar file and try to load the class again.
If still failed, a class not found exception will be thrown.
Be careful in uploading new jar files and make sure all classes
are consistent, otherwise, we may not be able to load your
classes properly.
Constructor Summary |
DynamicClassLoader(org.apache.hadoop.conf.Configuration conf,
ClassLoader parent)
Creates a DynamicClassLoader that can load classes dynamically
from jar files under a specific folder. |
Methods inherited from class java.lang.ClassLoader |
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findSystemClass, getPackage, getPackages, getParent, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
DynamicClassLoader
public DynamicClassLoader(org.apache.hadoop.conf.Configuration conf,
ClassLoader parent)
- Creates a DynamicClassLoader that can load classes dynamically
from jar files under a specific folder.
- Parameters:
conf
- the configuration for the cluster.parent
- the parent ClassLoader to set.
loadClass
public Class<?> loadClass(String name)
throws ClassNotFoundException
- Overrides:
loadClass
in class ClassLoader
- Throws:
ClassNotFoundException
Copyright © 2015 The Apache Software Foundation. All Rights Reserved.