我是JMX技术的新手,如果我理解正确的话: 有两种方法可以调用Mbeans上的操作:
1)使用MBeanServerConnection的调用操作,并使用
$ rbenv which ruby
/home/deploy/.rbenv/versions/2.1.2/bin/ruby
2)使用mbsc.invoke(name, operationName, params, signature)
获取MBean接口并调用接口上的操作。
我的问题是,如果我想使用上面提到的第二种方法,我是否还需要在我的客户端中使用Mbean接口? Mbean接口是我要监视的主应用程序源的一部分。我是否还需要将相同的Mbean接口复制到客户端代码中?
答案 0 :(得分:2)
对我而言,没有best practice
,因为决定取决于您的需求。
在下面找到我的个人意见。
mbsc.invoke(name, operationName, params, signature)
如果客户端应用程序严格依赖于执行MBean的应用程序,则客户端应用程序不应依赖于该接口。以jconsole
实用程序为例。它可以调用所有公开的操作,而无需访问mbean接口类。
JMX.newMBeanProxy(connection, objectName, interfaceClass)
如果客户端应用程序与执行MBean的应用程序有很强的依赖关系(例如,您为应用程序提供了mbean,而客户端应用程序是您的支持工具),那么当您获得好处时,我会选择此解决方案编译时检查。