Package org.springframework.instrument.classloading.jboss

# Class JBossLoadTimeWeaver

java.lang.Object
org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver

All Implemented Interfaces:
  `LoadTimeWeaver`

public class JBossLoadTimeWeaver extends Object implements LoadTimeWeaver
`LoadTimeWeaver` implementation for JBoss's instrumentable ClassLoader. Thanks to Ales Justin and Marius Bogoevici for the initial prototype.

This weaver supports WildFly 13-23 (DelegatingClassFileTransformer) as well as WildFly 24+ (DelegatingClassTransformer), as of Spring Framework 6.1.15.

Since:
  3.0
Author:
  Costin Leau, Juergen Hoeller

## Constructor Summary

Constructors
Constructor
Description
`JBossLoadTimeWeaver()`
Create a new instance of the `JBossLoadTimeWeaver` class using the default `class loader`.
`JBossLoadTimeWeaver(ClassLoader classLoader)`
Create a new instance of the `JBossLoadTimeWeaver` class using the supplied `ClassLoader`.

## Method Summary

Modifier and Type
Method
Description
`void`
`addTransformer(ClassFileTransformer transformer)`
Add a `ClassFileTransformer` to be applied by this `LoadTimeWeaver`.
`ClassLoader`
`getInstrumentableClassLoader()`
Return a `ClassLoader` that supports instrumentation through AspectJ-style load-time weaving based on user-defined `ClassFileTransformers`.
`ClassLoader`
`getThrowawayClassLoader()`
Return a throwaway `ClassLoader`, enabling classes to be loaded and inspected without affecting the parent `ClassLoader`.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### JBossLoadTimeWeaver

public JBossLoadTimeWeaver()
Create a new instance of the `JBossLoadTimeWeaver` class using the default `class loader`.

See Also:
  - `ClassUtils.getDefaultClassLoader()`

### JBossLoadTimeWeaver

public JBossLoadTimeWeaver(@Nullable ClassLoader classLoader)
Create a new instance of the `JBossLoadTimeWeaver` class using the supplied `ClassLoader`.

Parameters:
  `classLoader` - the `ClassLoader` to delegate to for weaving

## Method Details

### addTransformer

public void addTransformer(ClassFileTransformer transformer)
Description copied from interface: `LoadTimeWeaver`
Add a `ClassFileTransformer` to be applied by this `LoadTimeWeaver`.

Specified by:
  `addTransformer` in interface `LoadTimeWeaver`
Parameters:
  `transformer` - the `ClassFileTransformer` to add

### getInstrumentableClassLoader

public ClassLoader getInstrumentableClassLoader()
Description copied from interface: `LoadTimeWeaver`
Return a `ClassLoader` that supports instrumentation through AspectJ-style load-time weaving based on user-defined `ClassFileTransformers`.

May be the current `ClassLoader`, or a `ClassLoader` created by this `LoadTimeWeaver` instance.

Specified by:
  `getInstrumentableClassLoader` in interface `LoadTimeWeaver`
Returns:
  the `ClassLoader` which will expose instrumented classes according to the registered transformers

### getThrowawayClassLoader

public ClassLoader getThrowawayClassLoader()
Description copied from interface: `LoadTimeWeaver`
Return a throwaway `ClassLoader`, enabling classes to be loaded and inspected without affecting the parent `ClassLoader`.

Should not return the same instance of the `ClassLoader` returned from an invocation of `LoadTimeWeaver.getInstrumentableClassLoader()`.

Specified by:
  `getThrowawayClassLoader` in interface `LoadTimeWeaver`
Returns:
  a temporary throwaway `ClassLoader`; should return a new instance for each call, with no existing state