【发布时间】:2011-10-17 05:15:00
【问题描述】:
JDK6 的 Java Attach API 在VirtualMachine 上提供了一个方法getAgentProperties():
公共抽象属性 getAgentProperties() 抛出 IOException
返回目标虚拟中的当前代理属性 机器。目标虚拟机可以维护一个列表 代表代理人的财产。这是的方式 完成,属性的名称和值的类型 是允许的,是特定于实现的。代理属性是 通常用于存储通信端点和其他 代理配置详细信息。例如,调试器代理 可能会为其传输地址创建一个代理属性。
此方法返回其键和值为的代理属性 一个字符串。键或值不是字符串的属性是 省略。如果在 目标虚拟机,则返回一个空的属性列表。
(来自Java Attach API)
我的问题是,如何在另一边设置这些属性(即 在运行代理的 JVM 中)?
instrument API 的文档也没有提及这一点。
【问题讨论】:
-
我不认为你可以。你需要做什么?
-
我想查看代理的状态。 IE。我有一个代理,它监听一个端口并且可以启动和停止。目前,我使用我设置的系统属性,当代理启动和停止时删除。这可行,但如果我不污染全局系统属性命名空间会更好。
-
来自上面的 Javadoc:“例如,调试器代理可能会为其传输地址创建代理属性”。所以肯定有人可以创建这样的属性。
-
@RolandHuß 你有没有找到答案?
-
不,很遗憾没有。我坚持上述解决方案,使用状态的系统属性。虽然不是最好的解决方案,但效果很好。
标签: java instrumentation agent