public class WebAppClassLoader extends URLClassLoader implements ClassVisibilityChecker
Specializes URLClassLoader with some utility and file mapping methods.
This loader defaults to the 2.3 servlet spec behavior where non
system classes are loaded from the classpath in preference to the
parent loader. Java2 compliant loading, where the parent loader
always has priority, can be selected with the
WebAppContext.setParentLoaderPriority(boolean)
method and influenced with WebAppContext.isServerClass(String)
and
WebAppContext.isSystemClass(String)
.
If no parent class loader is provided, then the current thread context classloader will be used. If that is null then the classloader that loaded this class is used as the parent.
Modifier and Type | Class and Description |
---|---|
static interface |
WebAppClassLoader.Context
The Context in which the classloader operates.
|
Constructor and Description |
---|
WebAppClassLoader(ClassLoader parent,
WebAppClassLoader.Context context)
Constructor.
|
WebAppClassLoader(WebAppClassLoader.Context context)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
void |
addClassFileTransformer(ClassFileTransformer transformer)
Deprecated.
|
void |
addClassPath(Resource resource) |
void |
addClassPath(String classPath) |
void |
addJars(Resource lib)
Add elements to the class path for the context from the jar and zip files found
in the specified resource.
|
void |
addTransformer(ClassFileTransformer transformer) |
void |
close() |
WebAppClassLoader.Context |
getContext() |
String |
getName() |
PermissionCollection |
getPermissions(CodeSource cs) |
URL |
getResource(String name)
Get a resource from the classloader
NOTE: this method provides a convenience of hacking off a leading /
should one be present.
|
Enumeration<URL> |
getResources(String name) |
boolean |
isServerClass(Class<?> clazz)
Is the class a Server Class.
|
boolean |
isSystemClass(Class<?> clazz)
Is the class a System Class.
|
boolean |
removeClassFileTransformer(ClassFileTransformer transformer)
Deprecated.
use
removeTransformer(ClassFileTransformer) instead |
boolean |
removeTransformer(ClassFileTransformer transformer) |
static <T> T |
runWithServerClassAccess(PrivilegedExceptionAction<T> action)
Run an action with access to ServerClasses
|
void |
setName(String name) |
String |
toString() |
findResource, findResources, getResourceAsStream, getURLs, newInstance, newInstance
clearAssertionStatus, getParent, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus
public WebAppClassLoader(WebAppClassLoader.Context context) throws IOException
context
- the context for this classloaderIOException
- if unable to initialize from contextpublic WebAppClassLoader(ClassLoader parent, WebAppClassLoader.Context context) throws IOException
parent
- the parent classloadercontext
- the context for this classloaderIOException
- if unable to initialize classloaderpublic static <T> T runWithServerClassAccess(PrivilegedExceptionAction<T> action) throws Exception
Run the passed PrivilegedExceptionAction
with the classloader
configured so as to allow server classes to be visible
T
- The type returned by the actionaction
- The action to runException
- if thrown by the actionpublic String getName()
public void setName(String name)
name
- the name of the classloaderpublic WebAppClassLoader.Context getContext()
public void addClassPath(Resource resource) throws IOException
resource
- Comma or semicolon separated path of filenames or URLs
pointing to directories or jar files. Directories should end
with '/'.IOException
- if unable to add classpath from resourcepublic void addClassPath(String classPath) throws IOException
classPath
- Comma or semicolon separated path of filenames or URLs
pointing to directories or jar files. Directories should end
with '/'.IOException
- if unable to add classpathpublic void addJars(Resource lib)
lib
- the resource that contains the jar and/or zip files.public PermissionCollection getPermissions(CodeSource cs)
getPermissions
in class URLClassLoader
public Enumeration<URL> getResources(String name) throws IOException
getResources
in class ClassLoader
IOException
public URL getResource(String name)
getResource
in class ClassLoader
@Deprecated public void addClassFileTransformer(ClassFileTransformer transformer)
addTransformer(ClassFileTransformer)
insteadtransformer
- the transformer to add@Deprecated public boolean removeClassFileTransformer(ClassFileTransformer transformer)
removeTransformer(ClassFileTransformer)
insteadtransformer
- the transformer to removepublic void addTransformer(ClassFileTransformer transformer)
public boolean removeTransformer(ClassFileTransformer transformer)
public void close() throws IOException
close
in interface Closeable
close
in interface AutoCloseable
close
in class URLClassLoader
IOException
public boolean isSystemClass(Class<?> clazz)
ClassVisibilityChecker
isSystemClass
in interface ClassVisibilityChecker
clazz
- The fully qualified name of the class.public boolean isServerClass(Class<?> clazz)
ClassVisibilityChecker
isServerClass
in interface ClassVisibilityChecker
clazz
- The fully qualified name of the class.Copyright © 2010 - 2020 Adobe. All Rights Reserved