javaAgent說明和例子

1. javaagent詳細的說明已經在另外一篇文章中有詳細說明:

http://blog.csdn.net/kangojian/article/details/8782575


2.javaagent簡單例子

package com.google.agent;

import java.lang.instrument.Instrumentation;

/**
 * Created by dell on 2016/12/17.
 */
public class Agent
{
    //premain 方法有兩種可能的簽名。

    /**
     * JVM 首先嚐試在代理類上調用以下方法
     * @param agentArgs agentArgs
     * @param inst inst
     */
    public static void premain(String agentArgs, Instrumentation inst)
    {
        System.out.println("Im 1st premain,My agentAges = [" + agentArgs + "].");
    }

    /**
     * 如果代理類沒有實現上面的方法,那麼 JVM 將嘗試調用該方法
     * @param agentArgs agentArgs
     */
    public static void premain(String agentArgs)
    {
        System.out.println("Im 2ed premain,My agentAges = [" + agentArgs + "].");
    }
}

javaagent只能使用jar包運行,所以需要將該javaagent類導出生成jar包。以IDEA爲例:

        》在src目錄下創建 META-INF/MANIFEST.MF 文件,內容按如下定義(注意爲4行,第4行爲空行):

           

Manifest-Version: 1.0
Premain-Class: com.google.agent.Agent
Can-Redefine-Classes: true

》File--Project Structure...--Project Setting--Artifacts,使用+號新加一個Artifacts,如圖:


注意:Manifest Files使用上方設置的配置文件。

          》保存成一個新的Artifact

 》回到IDEA,菜單Build > Build Artifacts.. 選擇剛纔創建的Artifact,點ok 生成了。Output directory目錄查看你的jar文件。


3. 簡單應用

    

package com.google.demo;

/**
 * Created by dell on 2016/12/17.
 */
public class Demo
{
    public static void main(String[] args)
    {
        System.out.println("This is main.");
    }
}
運行該測試Demo:


運行結果:

Im 1st premain,My agentAges = [agentargs].
This is main.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章