2013-11-21 22 views
0

我正在使用jdk 1.6。我将代理附加到目标jvm并发送了多个参数。是否有可能重用运行在目标jvm中的代理,因为我的几个参数已经改变了?我想在使用这些参数的新值进行新工作的代理中进行编程。有没有人有类似的经历?谢谢如何重用在运行时已经加载到目标jvm的代理程序

+1

“重用代理”是什么意思?如果你想改变正在运行的代理的行为,你的代理应该为它提供一个接口,例如通过套接字或管道接受命令。 – Holger

+0

是的。重用代理。 –

+0

那么,管应该是一种方式来做到这一点。 –

回答

0

当然,您可以重复使用代理的实现。用某种方法表示的Java代理

public static void premain(String agentArgs, Instrumentation inst); 

被视为与任何Java类一样。唯一的一点是,此代理在正常 Java应用程序的主入口点之前被调用。此外,该代理提供了一个可以轻松添加Instrumentation。您可以重构您的代理程序以在自己的捆绑软件中进行操作,并通过将代理程序捆绑包添加到程序的类路径中,将该代理程序添加到任何程序中。代理基本上只是一个普通的Java程序,它在清单文件中声明的Java程序之前被调用,或者作为命令行中的显式程序入口点被调用。

请注意,为加载代理程序必须加载的任何类都不能再被拦截。

+0

我需要在运行时执行此操作。 –

+0

Java代理在运行时被调用。但是,它必须在程序启动时进行注册。 –

+0

'premain'只允许在目标程序被加载之前。 –

相关问题