【问题标题】:JMX Client needing MBean interface需要 MBean 接口的 JMX 客户端
【发布时间】:2015-10-13 06:29:54
【问题描述】:

我是 JMX 技术的新手,如果我理解正确: 在 Mbeans 上调用操作有两种方式:

1) 使用 MBeanServerConnection 的调用操作并使用 mbsc.invoke(name, operationName, params, signature) 以字符串形式提供方法名称

2) 使用JMX.newMBeanProxy(connection, objectName, interfaceClass)获取MBean接口并调用接口上的操作。

我的问题是,如果我想使用上面提到的第二种方法,我是否需要在我的客户端中也有 Mbean 接口? Mbean 接口是我要监视的主要应用程序源的一部分。我是否也需要将相同的 Mbean 接口复制到客户端代码中?

【问题讨论】:

  • 是的,你需要。它作为第三个参数传递给方法interfaceClass
  • 但是要让我的客户端独立于代理(要监控的应用程序),最佳实践是什么?我应该将我的 Mbean 接口保存在单独的 jar 文件中,并让客户端和代理导入该 jar 文件吗?

标签: java jmx mbeans


【解决方案1】:

对我来说没有best practice,因为决定取决于您的需求。

在下面找到我的个人意见。

mbsc.invoke(name, operationName, params, signature)

如果客户端应用程序不严格依赖于执行 MBean 的应用程序,则客户端应用程序不应依赖于接口。以jconsole 实用程序为例。它可以调用所有公开的操作,而无需访问 mbean 接口类。

JMX.newMBeanProxy(connection, objectName, interfaceClass)

如果客户端应用程序对执行 MBean 的应用程序有很强的依赖关系(例如,您为应用程序提供 mbean,而客户端应用程序是您的支持工具),我会选择这个解决方案,因为您可以获得好处编译时检查。

【讨论】:

  • 谢谢,所以我很清楚有两种方法可以实现客户端。一种是它独立于应用程序,另一种是客户端依赖于应用程序的mbean接口。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-20
  • 1970-01-01
  • 2011-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多