我已經創建了一個Java代理jar文件(它可以在命令行上完美工作)。 接下來,我想將此代理附加到j2ee服務器中正在運行的JVM。 所以我使用的代碼:如何在代碼中動態添加Java代理程序後卸載Java代理程序? Java儀器
public static void loadAgent() {
System.out.println("dynamically loading javaagent");
String nameOfRunningVM = ManagementFactory.getRuntimeMXBean().getName();
int p = nameOfRunningVM.indexOf('@');
String pid = nameOfRunningVM.substring(0, p);
try {
VirtualMachine vm = VirtualMachine.attach(pid);
String jarFilePath = vm.getSystemProperties().getProperty("java.home")+File.separator+"lib"+File.separator+"test-agent-7.jar";
vm.loadAgent(jarFilePath, "");
vm.detach();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
編輯:這是現在的工作,我能看到,變壓器被調用。 我也可以刪除變壓器,並能夠調試變壓器。
我的問題是:
- 我如何卸載這個Java代理罐子一旦完成了嗎?
- 是關閉/重新啓動JVM的唯一方法嗎?
- 如果jar留在內存中,是否有任何影響?
你解決了你的問題@Tal? –
不幸的是...代理罐保持加載.. – Tal