JMX最常见的场景是监控Java程序的基本信息和运行情况,任何Java程序都可以开启JMX,然后使用JConsole或Visual VM进行预览。下图是使用Jconsle通过JMX查看Java程序的运行信息
1.png
为Java程序开启JMX很简单,只要在运行Java程序的命令后面指定如下命令即可
-Djava.rmi.server.hostname=127.0.0.1
-Dcom.sun.management.jmxremote.port=1000
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
我们从Jconsole的视图标签中见到,JConsole通过JMX展示的信息都是Java程序的通用信息,如内存情况、线程情况、类加载情况等,换言之,只要是Java程序就都具备这些信息。这些信息为我们优化程序性能、排查BUG非常有用,而JMX就是获取这些信息的基础,因此它是一种非常有用的技术。
然而JMX的强大远不止此,它出了能提供一些通用的信息以外,还能通过特定的编程接口提供一些针对具体程序的专有信息并在JConsole等JMX客户端工具中展示,具体点说就是程序员可以把需要展示的信息放在一种叫做MBean的Java对象内,然后JConsole之类的客户端工具可以连接到JMX服务,识别MBean并在图形界面中显示。从纯抽象的角度触发,这其实有点像浏览器发送一个请求给http服务器,然后htt