【问题标题】:How to wrap a JMXClient in a JavaAgent如何将 JMXClient 包装在 JavaAgent 中
【发布时间】:2013-04-04 18:34:40
【问题描述】:

我想通过将客户端包装在 javaagent 包中并在本地查询 MBean 来将自定义 JMX 客户端加载到 JVM 中。我的意图是 JMX 客户端将定期查询主机应用程序的 MBean 或接收通知。但是,由于 javaagent 在主 jar 之前加载(通过 premain),所以宿主应用程序的 MBean 尚不可用。我应该如何处理这个“先有鸡”的问题?线程适合这个吗?还是有其他一些首选的 JMX 机制? 谢谢

【问题讨论】:

  • 你能抓住并处理前几个没有应用程序 Mbean 的民意调查吗?或者可能会在投票中延迟初始时间?

标签: jmx mbeans javaagents


【解决方案1】:

开始一个循环并在其中休眠,直到您成功获取目标 MBeanServer。如果这是平台 MBeanServer,您应该立即使用ManagementFactory.getPlatformMBeanServer() 获取它。然后注册一个notification listener,其ObjectName 定义为MBeanServerDelegate.DELEGATE_NAME。过滤MBeanServerNotification 类的通知,通知类型为MBeanServerNotification.REGISTRATION_NOTIFICATION。每次在目标 MBeanServer 中注册新的 MBean 时,您的通知侦听器都会收到回调。

【讨论】:

  • 优秀。这是一个很好的解决方案。谢谢。
猜你喜欢
  • 2013-03-30
  • 2021-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多