问题描述
我见过这样的示例,其中可以使用Byte Buddy将代理附加到正在运行的Java进程。
public static void premain(String args,Instrumentation instrumentation) {
File file ;
try {
file = (new File("BBAgent.jar"));
ByteBuddyAgent.attach(file,"21345");
}
catch (Exception e)
{
e.printstacktrace();
}
// Code to access objects in the original running process here.
}
}
我的问题是,是否可以通过在附件下方添加其他代码来访问原始过程中的对象?还是必须在jar文件附件中打包任何在原始过程中访问数据的代码?
解决方法
否,如果不序列化对象,则无法将它们从一个Java进程转移到另一个Java进程。例如,您可能需要打开一个套接字,以将字节从一个进程传输到另一个进程,在那里您肯定可以发送序列化的对象。