我是 JMX 技术的新手,如果我理解正确的话: 有两种方法可以调用 Mbean 上的操作:
1) 使用 MBeanServerConnection 的调用操作并使用 mbsc.invoke(name, operationName, params,signature) 以字符串形式提供方法名称
2) 使用JMX.newMBeanProxy(connection, objectName, interfaceClass)
获取MBean接口(interface)并调用接口(interface)上的操作。
我的问题是,如果我想使用上面提到的第二种方法,我的客户端中是否也需要有 Mbean 接口(interface)? Mbean 接口(interface)是我要监视的主应用程序源的一部分。我是否也需要将相同的 Mbean 接口(interface)复制到客户端代码中?
最佳答案
对我来说,没有最佳实践
,因为决定取决于您的需求。
下面是我的个人观点。
mbsc.invoke(名称、操作名称、参数、签名)
如果客户端应用程序不严格依赖于执行 MBean 的应用程序,则客户端应用程序不应依赖于该接口(interface)。以 jconsole
实用程序为例。它可以调用所有公开的操作,而无需访问 mbean 接口(interface)类。
JMX.newMBeanProxy(连接、objectName、interfaceClass)
如果客户端应用程序对执行 MBean 的应用程序有很强的依赖性(例如,您为应用程序提供 mbean,并且客户端应用程序是您的支持工具),那么我会选择此解决方案,因为您可以获得好处编译时检查。
关于java - JMX 客户端需要 MBean 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33095631/