public class TomcatInstrumentableClassLoader
extends WebappClassLoader
To be registered using a
Loader
tag
in Tomcat's Context
definition in the server.xml
file, with the Spring-provided
"spring-tomcat-weaver.jar" file deployed into Tomcat's "server/lib" (for Tomcat 5.x) or "lib" (for Tomcat 6.x) directory.
The required configuration tag looks as follows:
<Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/>
Typically used in combination with a
ReflectiveLoadTimeWeaver
defined in the Spring application context. The addTransformer
and
getThrowawayClassLoader
methods mirror the corresponding methods
in the LoadTimeWeaver interface, as expected by ReflectiveLoadTimeWeaver.
See the PetClinic sample application for a full example of this ClassLoader in action.
NOTE: Requires Apache Tomcat version 5.0 or higher.
addTransformer(java.lang.instrument.ClassFileTransformer)
,
getThrowawayClassLoader()
,
ReflectiveLoadTimeWeaver
Modifier and Type | Field and Description |
---|---|
private static java.lang.String |
CLASS_SUFFIX |
private WeavingTransformer |
weavingTransformer
Use an internal WeavingTransformer
|
Constructor and Description |
---|
TomcatInstrumentableClassLoader()
Create a new
TomcatInstrumentableClassLoader using the
current context class loader. |
TomcatInstrumentableClassLoader(java.lang.ClassLoader parent)
Create a new
TomcatInstrumentableClassLoader with the
supplied class loader as parent. |
Modifier and Type | Method and Description |
---|---|
void |
addTransformer(java.lang.instrument.ClassFileTransformer transformer)
Delegate for LoadTimeWeaver's
addTransformer method. |
private static java.lang.Class |
findCommonAncestor(java.lang.Class one,
java.lang.Class two) |
protected ResourceEntry |
findResourceInternal(java.lang.String name,
java.lang.String path) |
java.lang.ClassLoader |
getThrowawayClassLoader()
Delegate for LoadTimeWeaver's
getThrowawayClassLoader method. |
private static void |
shallowCopyFieldState(java.lang.Object src,
java.lang.Object dest)
Given the source object and the destination, which must be the same class
or a subclass, copy all fields, including inherited fields.
|
java.lang.String |
toString() |
private static final java.lang.String CLASS_SUFFIX
private final WeavingTransformer weavingTransformer
public TomcatInstrumentableClassLoader()
TomcatInstrumentableClassLoader
using the
current context class loader.public TomcatInstrumentableClassLoader(java.lang.ClassLoader parent)
TomcatInstrumentableClassLoader
with the
supplied class loader as parent.parent
- the parent ClassLoader
to be usedpublic void addTransformer(java.lang.instrument.ClassFileTransformer transformer)
addTransformer
method.
Typically called through ReflectiveLoadTimeWeaver.public java.lang.ClassLoader getThrowawayClassLoader()
getThrowawayClassLoader
method.
Typically called through ReflectiveLoadTimeWeaver.protected ResourceEntry findResourceInternal(java.lang.String name, java.lang.String path)
public java.lang.String toString()
private static void shallowCopyFieldState(java.lang.Object src, java.lang.Object dest) throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentException
- if arguments are incompatible or either
is null
private static java.lang.Class findCommonAncestor(java.lang.Class one, java.lang.Class two) throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentException