远程 JMX 的两难境地
网络管理应用程序或分布式服务可以通过 远程 JMX(JMX Remoting)的方式跨网络地访问 JMX 代理,远程 JMX 也是 JSR 160 的主旨所在。远程 JMX(JMX Remoting)也是即将发布的 JMX 1.2 参考实现发行版的新的主要特征。
JSR 160 将详细说明在一个网络上应该如何执行 JMX 代理的发现以及远程访问代理能力的具体方式。这将包括一些有关所使用的协议适配器的具体细节。在最终完成远程 JMX 1.2 规范之前(很可能在 2003 年发布),我们必须寻找一种在 OpenNMS 和用来管理 ClickMeter MBean 的 JMX 代理之间进行通信的替代方法。
一个可实施的提供远程 JMX 的解决方案
当然,JMX 代理的主要目的之一是提供对它所管理 JMX MBean 的远程访问(虽然,可以将某些 JMX 代理设计成增值服务,可能不会公开它们所有的受管 MBean)。代理可以使用连接器和协议适配器来与 NMS 应用程序或分布式服务进行通信。
在 ClickMeter 这种情况中,我们使用 JMX 参考实现中的一个简单的代理,这个实现包括了一个 HTTP 协议适配器。这个简单的代理通过 HTTP 协议适配器公开它管理的所有 MBean 的属性和操作。
使用 HTTP 适配器将工作降至最少
可以方便地使用 JMX 参考实现中的这个简单代理和 HTTP 协议适配器来进行 OpenNMS 和 ClickMeter MBean 之间的通信。图 3 显示了我们所提议的通信方法。在操作期间,OpenNMS 的 capsd 将扫描已检测到的节点,以确定是否支持“CLICKMETER”服务。轮询器守护程序 pollerd 将定期轮询已检测到的服务以确保它们是可操作的。为了提供这两种探测,可以使用由 ClickMeter MBean 公开的 incPanelValue 操作。使用 incPanelValue 作为探测机制所带来的好处是我们能够以可视化的方式看见 OpenNMS 的检测和轮询操作。每一次探测会使 ClickMeter 的值递增。
图 3. 用 HTTP 适配器访问 ClickMeter

然后,唯一剩下要做的是,确定如何使用 HTTP 协议适配器来访问对 ClickMeter MBean 的 incPanelValue 操作。可以使用浏览器来访问 JMX 代理,其中 URL 为:
当然,在做这之前,请确保该代理正在运行。(如果您需要重新温习如何去做,请参阅本系列的 第 2 部分)。然后,单击按钮,尝试执行已公开的 incPanelValue 操作。您应该看到类似于图 4 的页面。
图 4. 确定探测 URL

在图 4 中,请注意用来访问该操作的所使用的 URL 为:
2 action=incPanelValue?action=incPanelValue
3
还要注意,如果 ClickMeter 应用程序运行正确,产生的页面将包含短语 incPanelValue Successful。我们将用该信息来从 OpenNMS 远程地访问 MBean。