2016-04-11 27 views
0

其實我想developpe java應用程序的女巫應該instrumentate另一個Java應用軟件巫婆我沒有它的源代碼..Instrumentate通過了Javassist + javaagent + JMX一個遙遠的Java應用程序

我試圖創建一個代理和將它附加到jvm ..然後我創建了一個mbean並嘗試連接到它..它在我嘗試在我的項目中處理一個類時起作用..但我不知道如何使用我的應用程序來遠程應用程序..

這裏是我的代碼:https://github.com/ammouna8ammouna/Monitoring.git

我真的很新的儀器的世界我真的需要幫助。

回答

0

如果你能得到的虛擬機,你的目標,你可以將使用

com.sun.tools.attach.VirtualMachine

例如,如果你有PID你代理的ProcessID ,你的JAR的目標是處理JAR的路徑和裝載機你可以嘗試這樣的事:

private static void attach(String pid, String jarPath, 
     ClassLoader toolLoader) throws Exception { 
    Class<?> attacherLib = toolLoader.loadClass("com.sun.tools.attach.VirtualMachine"); 
    Class<?> string = toolLoader.loadClass("java.lang.String"); 

    Method attach = attacherLib.getMethod("attach", string); 

    Object instance = attach.invoke(null, pid); 

    Method loadAgent = attacherLib.getMethod("loadAgent", string, string); 
    loadAgent.invoke(instance, jarFilePath, ""); 

    Method detach = attacherLib.getMethod("detach"); 
    detach.invoke(instance); 
} 

讓我知道,如果是明確的,或者您需要其他幫助。

相關問題