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
Loadertag in Tomcat'sContextdefinition in theserver.xmlfile, 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
ReflectiveLoadTimeWeaverdefined in the Spring application context. TheaddTransformerandgetThrowawayClassLoadermethods 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
InstrumentableClassLoaderfacility 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 newTomcatInstrumentableClassLoaderusing the current context class loader.TomcatInstrumentableClassLoader(ClassLoader parent)Create a newTomcatInstrumentableClassLoaderwith the supplied class loader as parent.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddTransformer(ClassFileTransformer transformer)Delegate for LoadTimeWeaver'saddTransformermethod.protected org.apache.catalina.loader.ResourceEntryfindResourceInternal(String name, String path)protected org.apache.catalina.loader.ResourceEntryfindResourceInternal(String name, String path, boolean manifestRequired)ClassLoadergetThrowawayClassLoader()Delegate for LoadTimeWeaver'sgetThrowawayClassLoadermethod.StringtoString()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 newTomcatInstrumentableClassLoaderusing the current context class loader.
TomcatInstrumentableClassLoader
public TomcatInstrumentableClassLoader(ClassLoader parent)
Create a newTomcatInstrumentableClassLoaderwith the supplied class loader as parent.- Parameters:
parent- the parentClassLoaderto be used
Method Detail
addTransformer
public void addTransformer(ClassFileTransformer transformer)
Delegate for LoadTimeWeaver'saddTransformermethod. Typically called through ReflectiveLoadTimeWeaver.
getThrowawayClassLoader
public ClassLoader getThrowawayClassLoader()
Delegate for LoadTimeWeaver'sgetThrowawayClassLoadermethod. Typically called through ReflectiveLoadTimeWeaver.
findResourceInternal
protected org.apache.catalina.loader.ResourceEntry findResourceInternal(String name, String path)
- Overrides:
findResourceInternalin classWebappClassLoader
findResourceInternal
protected org.apache.catalina.loader.ResourceEntry findResourceInternal(String name, String path, boolean manifestRequired)
- Overrides:
findResourceInternalin classWebappClassLoader