CachingWebAppClassLoader
public class WebAppClassLoader
extends java.net.URLClassLoader
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 | Description |
---|---|---|
static interface |
WebAppClassLoader.Context |
The Context in which the classloader operates.
|
Constructor | Description |
---|---|
WebAppClassLoader(java.lang.ClassLoader parent,
WebAppClassLoader.Context context) |
Constructor.
|
WebAppClassLoader(WebAppClassLoader.Context context) |
Constructor.
|
Modifier and Type | Method | Description |
---|---|---|
void |
addClassFileTransformer(java.lang.instrument.ClassFileTransformer transformer) |
Deprecated.
|
void |
addClassPath(java.lang.String classPath) |
|
void |
addClassPath(org.eclipse.jetty.util.resource.Resource resource) |
|
void |
addJars(org.eclipse.jetty.util.resource.Resource lib) |
Add elements to the class path for the context from the jar and zip files found
in the specified resource.
|
void |
addTransformer(java.lang.instrument.ClassFileTransformer transformer) |
|
void |
close() |
|
protected java.lang.Class<?> |
findClass(java.lang.String name) |
|
protected java.lang.Class<?> |
foundClass(java.lang.String name,
java.net.URL url) |
|
WebAppClassLoader.Context |
getContext() |
|
java.lang.String |
getName() |
|
java.security.PermissionCollection |
getPermissions(java.security.CodeSource cs) |
|
java.net.URL |
getResource(java.lang.String name) |
Get a resource from the classloader
NOTE: this method provides a convenience of hacking off a leading /
should one be present.
|
java.util.Enumeration<java.net.URL> |
getResources(java.lang.String name) |
|
protected java.lang.Class<?> |
loadClass(java.lang.String name,
boolean resolve) |
|
boolean |
removeClassFileTransformer(java.lang.instrument.ClassFileTransformer transformer) |
Deprecated.
use
removeTransformer(ClassFileTransformer) instead |
boolean |
removeTransformer(java.lang.instrument.ClassFileTransformer transformer) |
|
static <T> T |
runWithServerClassAccess(java.security.PrivilegedExceptionAction<T> action) |
Run an action with access to ServerClasses
|
void |
setName(java.lang.String name) |
|
java.lang.String |
toString() |
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getPackage, getPackages, getParent, getPlatformClassLoader, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
public WebAppClassLoader(WebAppClassLoader.Context context) throws java.io.IOException
context
- the context for this classloaderjava.io.IOException
- if unable to initialize from contextpublic WebAppClassLoader(java.lang.ClassLoader parent, WebAppClassLoader.Context context) throws java.io.IOException
parent
- the parent classloadercontext
- the context for this classloaderjava.io.IOException
- if unable to initialize classloaderpublic static <T> T runWithServerClassAccess(java.security.PrivilegedExceptionAction<T> action) throws java.lang.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 runjava.lang.Exception
- if thrown by the actionpublic java.lang.String getName()
getName
in class java.lang.ClassLoader
public void setName(java.lang.String name)
name
- the name of the classloaderpublic WebAppClassLoader.Context getContext()
public void addClassPath(org.eclipse.jetty.util.resource.Resource resource) throws java.io.IOException
resource
- Comma or semicolon separated path of filenames or URLs
pointing to directories or jar files. Directories should end
with '/'.java.io.IOException
- if unable to add classpath from resourcepublic void addClassPath(java.lang.String classPath) throws java.io.IOException
classPath
- Comma or semicolon separated path of filenames or URLs
pointing to directories or jar files. Directories should end
with '/'.java.io.IOException
- if unable to add classpathpublic void addJars(org.eclipse.jetty.util.resource.Resource lib)
lib
- the resource that contains the jar and/or zip files.public java.security.PermissionCollection getPermissions(java.security.CodeSource cs)
getPermissions
in class java.net.URLClassLoader
public java.util.Enumeration<java.net.URL> getResources(java.lang.String name) throws java.io.IOException
getResources
in class java.lang.ClassLoader
java.io.IOException
public java.net.URL getResource(java.lang.String name)
getResource
in class java.lang.ClassLoader
protected java.lang.Class<?> loadClass(java.lang.String name, boolean resolve) throws java.lang.ClassNotFoundException
loadClass
in class java.lang.ClassLoader
java.lang.ClassNotFoundException
@Deprecated public void addClassFileTransformer(java.lang.instrument.ClassFileTransformer transformer)
addTransformer(ClassFileTransformer)
insteadtransformer
- the transformer to add@Deprecated public boolean removeClassFileTransformer(java.lang.instrument.ClassFileTransformer transformer)
removeTransformer(ClassFileTransformer)
insteadtransformer
- the transformer to removepublic void addTransformer(java.lang.instrument.ClassFileTransformer transformer)
public boolean removeTransformer(java.lang.instrument.ClassFileTransformer transformer)
protected java.lang.Class<?> findClass(java.lang.String name) throws java.lang.ClassNotFoundException
findClass
in class java.net.URLClassLoader
java.lang.ClassNotFoundException
protected java.lang.Class<?> foundClass(java.lang.String name, java.net.URL url) throws java.lang.ClassNotFoundException
java.lang.ClassNotFoundException
public void close() throws java.io.IOException
close
in class java.net.URLClassLoader
java.io.IOException
public java.lang.String toString()
toString
in class java.lang.Object
Copyright © 1995–2018 Webtide. All rights reserved.