您好我想使用浏览器监控Java应用程序,但同时利用现有的JMX基础架构。
我知道JMX提供了一个HTTP接口,但我认为它提供了一个标准的web gui,并且不可能将其功能与现有系统混搭。
您是否了解JMX的任何REST界面?
我对谷歌的研究表明,有一个project做了类似的事情。这是唯一的选择吗?
答案 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。
答案 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相关的工具。