The second case talks about Java Instrumentation API – this link points to a Javadoc which is rather descriptive.
And here, is the full instruction and an example of how to create java instrumentation agent.
The main concept is to:
-
Implement a static
premain
(as an analogy tomain
) method, like this:import java.lang.instrument.Instrumentation; class Example { public static void premain(String args, Instrumentation inst) { ... } }
-
Create a manifest file (say,
manifest.txt
) marking this class for pre-main execution. Its contents are:Premain-Class: Example
-
Compile the class and package this class into a
JAR
archive:javac Example.java jar cmf manifest.txt yourAwesomeAgent.jar *.class
-
Execute your JVM with
-javaagent
parameter, like this:java -javaagent:yourAwesomeAgent.jar -jar yourApp.jar