寫第一個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