Class TomcatInstrumentableClassLoader
- java.lang.Object
- java.lang.ClassLoader
- org.apache.catalina.loader.WebappClassLoader
- org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader
public class TomcatInstrumentableClassLoader extends WebappClassLoader
Extension of Tomcat's default class loader which adds instrumentation to loaded classes without the need to use a VM-wide agent.To be registered using a
Loader
tag in Tomcat'sContext
definition in theserver.xml
file, with the Spring-provided "spring-instrument-tomcat.jar" file deployed into Tomcat's "lib" 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. TheaddTransformer
andgetThrowawayClassLoader
methods mirror the corresponding methods in the LoadTimeWeaver interface, as expected by ReflectiveLoadTimeWeaver.NOTE: Requires Apache Tomcat version 6.0 or higher, as of Spring 4.0. This class is not intended to work on Tomcat 8.0+; please rely on Tomcat's own
InstrumentableClassLoader
facility instead, as autodetected by Spring'sTomcatLoadTimeWeaver
.- Since:
- 2.0
- Author:
- Costin Leau, Juergen Hoeller
- See Also:
addTransformer(java.lang.instrument.ClassFileTransformer)
,getThrowawayClassLoader()
,ReflectiveLoadTimeWeaver
,TomcatLoadTimeWeaver
Constructor Summary
Constructors Constructor Description TomcatInstrumentableClassLoader()
Create a newTomcatInstrumentableClassLoader
using the current context class loader.TomcatInstrumentableClassLoader(ClassLoader parent)
Create a newTomcatInstrumentableClassLoader
with the supplied class loader as parent.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addTransformer(ClassFileTransformer transformer)
Delegate for LoadTimeWeaver'saddTransformer
method.protected org.apache.catalina.loader.ResourceEntry
findResourceInternal(String name, String path)
protected org.apache.catalina.loader.ResourceEntry
findResourceInternal(String name, String path, boolean manifestRequired)
ClassLoader
getThrowawayClassLoader()
Delegate for LoadTimeWeaver'sgetThrowawayClassLoader
method.String
toString()
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findClass, findLibrary, findLoadedClass, findResource, findResource, findResources, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
Constructor Detail
TomcatInstrumentableClassLoader
public TomcatInstrumentableClassLoader()
Create a newTomcatInstrumentableClassLoader
using the current context class loader.
TomcatInstrumentableClassLoader
public TomcatInstrumentableClassLoader(ClassLoader parent)
Create a newTomcatInstrumentableClassLoader
with the supplied class loader as parent.- Parameters:
parent
- the parentClassLoader
to be used
Method Detail
addTransformer
public void addTransformer(ClassFileTransformer transformer)
Delegate for LoadTimeWeaver'saddTransformer
method. Typically called through ReflectiveLoadTimeWeaver.
getThrowawayClassLoader
public ClassLoader getThrowawayClassLoader()
Delegate for LoadTimeWeaver'sgetThrowawayClassLoader
method. Typically called through ReflectiveLoadTimeWeaver.
findResourceInternal
protected org.apache.catalina.loader.ResourceEntry findResourceInternal(String name, String path)
- Overrides:
findResourceInternal
in classWebappClassLoader
findResourceInternal
protected org.apache.catalina.loader.ResourceEntry findResourceInternal(String name, String path, boolean manifestRequired)
- Overrides:
findResourceInternal
in classWebappClassLoader