写第一个agenthtml
本部分将详细探讨如何写出第一个本身的java agent。咱们将尽量简单的书写第一个简单的java agent,由于这一部分只是简单的介绍java agent的用法。编写一个agent须要写一个拥有静态的premain()方法的类,参考以下:java
[java]
package net.javabeat.articles.javaagent.test;
import java.lang.instrument.Instrumentation;
public class TestJavaAgent {
public static void premain(String agentArgument,
Instrumentation instrumentation) {
System.out.println("Test Java Agent");
}
}
Note:一个类要成为agent拥有上述的方法是必须的强制的。上面的agent除了向控制台打印一些简单的内容什么都没有作。
[java]
Manifest-Version: 1.0
Premain-Class: net.javabeat.articles.javaagent. test.TestJavaAgent jvm
Agents须要被打包成jar文件而且经过 "javaagent"的jvm启动参数来启动应用使得应用能够感知agent的存在。注意,对于一个agent的jar文件拥有Premain—class的属性是有必要的,由于此属性制定了这个agent类的全路径名称。下面咱们将使用这个agent作点事情,咱们须要作点准备工做,首先咱们须要建立一个简单的java类以下,注意,在应用运行的时候,咱们调用这个agent,调用一个agent是经过jvm的参数指定的。
[java]
package net.javabeat.articles.javaagent.test;
public class TestMain {
public static void main(String[] args) {
System.out.println("Test Main Class");
}
} htm
建立一个名字为 test-agent.jar,而且把“net.javabeat.articles.javaagent.test.TestJavaAgent”和manifest文件“MANIFET.MF”
打开控制台,经过下面的命令启动应用和agent java -javaagent:test-agent.jar net.javabeat.articles.javaagent.test.TestMain
rem
在控制台你将会看到以下的输出get
[java] www.2cto.com
Test Java Agent
Test Main Class io
Note:在这一部分中有一些事情须要注意: 第一:agent是经过传递给jvm参数来运行起来的。具体过程就是经过指定 javaagent参数 ,紧跟在javaagent后面的是指定这个jar文件的路径。第二:java agent 是在咱们应用启动以前启动的,这里能够经过输出到控制台的内容得以证实。class