有没有可用的JMX-REST桥接器?

时间:2009-10-15 10:51:09

标签: http rest jmx

您好我想使用浏览器监控Java应用程序,但同时利用现有的JMX基础架构。

我知道JMX提供了一个HTTP接口,但我认为它提供了一个标准的web gui,并且不可能将其功能与现有系统混搭。

您是否了解JMX的任何REST界面?

我对谷歌的研究表明,有一个project做了类似的事情。这是唯一的选择吗?

5 个答案:

答案 0 :(得分:23)

Jolokia是一个新的(此时)JMX代理,您可以在JVM中安装并通过HTTP以JSON格式公开MBeanServer。

答案 1 :(得分:3)

Tomcat在其Manager应用程序中提供JMX Proxy Servlet。我不认为它完全是REST,但它是无状态的,并且是根据简单的HTTP请求构建的,所以它应该足够接近。

答案 2 :(得分:2)

对于后人,我最近在我的SimpleJMX包中添加了一个小型Web服务器。如果在类路径中,它通过Jetty将bean从平台MBeanServer暴露给HTTP。还有所有页面的文本版本,使其易于刮擦。

// create a new JMX server listening on a specific port
JmxServer jmxServer = new JmxServer(8000);
jmxServer.start();

// register any beans to jmx as necessary
jmxServer.register(someObj);

// create a web server publisher listening on a specific port
JmxWebServer jmxWebServer = new JmxWebServer(8080);
jmxWebServer.start();

有一个little test program显示它正在运行。这是从浏览器访问的java.lang:type=Memory图像。正如您所看到的,输出是非常基本的HTML。

enter image description here

答案 3 :(得分:1)

您可能需要查看jmx4perl。它附带了一个代理servlet,它将REST请求代理到本地JMX调用,并返回带有答案的JSON结构。它支持读取,写入,执行,列表(mbeans列表)和搜索操作,并且知道如何通过类似XPath的表达式进入复杂的数据结构。有关详细信息,请查看协议说明。

即将发布的版本也可以处理批量(= =多次同时)请求,并增加了发布JSON请求作为纯REST GET请求的替代方法的可能性。

在下一个版本中,将支持代理模式,因此不需要在目标平台上部署代理servlet,而只需在中间代理服务器上部署代理servlet。

答案 4 :(得分:1)

MX4J是另一种选择。在下面引用它的主页 -

  

MX4J是一个项目,用于构建Java(TM)管理扩展(JMX)和JMX远程API(JSR 160)规范的开源实现,以及构建与JMX相关的工具。