在运行时监控应用的状态
Java Management Extensions (JMX) 是您在自己的应用中嵌入代码的标准方式,以便在运行时报告应用的操作状态。
将报告代理(“探针”)嵌入到更大的软件中称为“instrumenting” your code。 JMX 使您能够使用一个框架来在运行时显示这些静态信息,因此您无需自己发明该报告系统管道。在运行时,您或您的系统管理员可以使用许多标准监控应用程序中的任何一种,这些应用程序有时称为“控制台”或“仪表板”。
JMX 处理将更新传输到监控应用程序,而无需您进行任何额外的编程。监控应用程序不必是本地的,而是可以通过网络远程运行。您的系统管理员选择了哪个监控应用程序,以及他们选择在何处运行它,对您应用程序中的代码没有影响。 JMX 是一个缓冲区,一个间接层,将您的编译时代码与这些实际的运行时配置问题分开。
目的是提供control room之类的this,但是对于你的软件:
这里的主要优势是使用标准协议来报告状态,而不是您发明自己的协议。
应用服务器
如果您的应用是 Web 应用,那么您的 Jakarta EE 服务器或 Web 容器(例如 Tomcat 或 Jetty)可能会使用 JMX 进行检测。所以你可以监控它的操作。例如,您可以查看当前打开的用户会话。
JVM
一些JVM 实现本身使用 JMX 进行检测,以报告 JVM 操作的各个方面的状态。正如您的问题所提到的,其中一些报告可能是关于内存使用情况、垃圾收集器活动等的。您的系统管理员的监控应用程序可以同时监视 JVM 和您的应用程序,每个都报告状态更新流。
操作系统
您的操作系统也可能被检测为报告其内部操作,尽管不太可能使用 JMX。用于此目的的一个强大的动态跟踪框架是DTrace,它内置在 macOS、FreeBSD 和 Solaris 中。
因此,您的系统管理员可能正在监视她的监控应用程序的所有四组状态信息:操作系统、JVM、应用程序服务器和您的应用程序。
阅读the Wikipedia page了解基本信息。
读写
JMX 不仅提供读取访问以监控当前状态,还提供写入。您选择的外部监控应用程序可用于以您在编程中选择的任何方式更改应用程序中的状态。例如,您可以更改线程池或缓存的大小。
继续我们对上面看到的控制室的比喻,您可以将通过 JMX 进行的读取访问视为观看控制室面板上的仪表。
将写入访问视为转动这些面板上的旋钮、开关和滑块。