public class HotSwapAgent extends Object
redefine(Class, CtClass)
and redefine(Class[], CtClass[]), which replace the
existing class definition with a new one.
These methods perform the replacement by
java.lang.instrument.Instrumentation. For details
of acceptable modification,
see the Instrumentation interface.
Before calling the redefine methods, the hotswap agent
has to be deployed.
To create a hotswap agent, run createAgentJarFile(String).
For example, the following command creates an agent file named hotswap.jar.
$ jshell --class-path javassist.jar
jshell> javassist.util.HotSwapAgent.createAgentJarFile("hotswap.jar")
Then, run the JVM with the VM argument -javaagent:hotswap.jar
to deploy the hotswap agent.
If the -javaagent option is not given to the JVM, HotSwapAgent
attempts to automatically create and start the hotswap agent on demand.
This automated deployment may fail. If it fails, manually create the hotswap agent
and deploy it by -javaagent.
The HotSwapAgent requires tools.jar as well as javassist.jar.
The idea of this class was given by Adam Lugowski.
Shigeru Chiba wrote this class by referring
to his RedefineClassAgent.
For details, see this discussion.
redefine(Class, CtClass),
redefine(Class[], CtClass[])| Constructor | Description |
|---|---|
HotSwapAgent() |
| Modifier and Type | Method | Description |
|---|---|---|
static void |
agentmain(String agentArgs,
Instrumentation inst) |
The entry point invoked when this agent is started after the JVM starts.
|
static File |
createAgentJarFile(String fileName) |
Creates an agent file for using
HotSwapAgent. |
Instrumentation |
instrumentation() |
Obtains the
Instrumentation object. |
static void |
premain(String agentArgs,
Instrumentation inst) |
The entry point invoked when this agent is started by
-javaagent. |
static void |
redefine(Class<?>[] oldClasses,
CtClass[] newClasses) |
Redefines classes.
|
static void |
redefine(Class<?> oldClass,
CtClass newClass) |
Redefines a class.
|
public Instrumentation instrumentation()
Instrumentation object.public static void premain(String agentArgs, Instrumentation inst) throws Throwable
-javaagent.Throwablepublic static void agentmain(String agentArgs, Instrumentation inst) throws Throwable
Throwablepublic static void redefine(Class<?> oldClass, CtClass newClass) throws NotFoundException, IOException, CannotCompileException
public static void redefine(Class<?>[] oldClasses, CtClass[] newClasses) throws NotFoundException, IOException, CannotCompileException
public static File createAgentJarFile(String fileName) throws IOException, CannotCompileException, NotFoundException
HotSwapAgent.Copyright © 2018 Shigeru Chiba, www.javassist.org. All rights reserved.