JMX
Spring 中的 JMX(Java Management Extensions)支持提供了功能,使您能够轻松透明地将 Spring 应用程序集成到 JMX 基础设施中。
具体来说,Spring 的 JMX 支持提供了四个核心功能:
-
自动将任何 Spring bean 注册为 JMX MBean。
-
控制 bean 管理接口的灵活机制。
-
通过远程 JSR-160 连接器声明式地暴露 MBean。
-
简单代理本地和远程 MBean 资源。
这些功能旨在无需将应用程序组件耦合到 Spring 或 JMX 接口和类即可工作。实际上,大多数情况下,您的应用程序类不需要了解 Spring 或 JMX 即可利用 Spring JMX 功能。
章节摘要
📄️ 导出您的 Beans 到 JMX
Spring 的 JMX 框架中的核心类是 MBeanExporter。这个类负责将您的 Spring bean 注册到 JMX MBeanServer 中。例如,考虑以下类:
📄️ 控制 Bean 的管理接口
在上一节的示例中,您对 bean 的管理接口几乎没有控制权。每个导出 bean 的所有公共属性和方法分别作为 JMX 属性和操作公开。为了对导出 bean 的哪些属性和方法实际公开为 JMX 属性和操作进行更细粒度的控制,Spring JMX 提供了一种全面且可扩展的机制来控制 bean 的管理接口。
📄️ 控制 Bean 的 ObjectName 实例
在幕后,MBeanExporter 委托给 ObjectNamingStrategy 的一个实现,以获取为其注册的每个 bean 创建的 ObjectName 实例。默认情况下,默认实现 KeyNamingStrategy 使用 beans Map 的键作为 ObjectName。此外,KeyNamingStrategy 可以将 beans Map 的键映射到一个或多个 Properties 文件中的条目,以解析 ObjectName。除了 KeyNamingStrategy 之外,Spring 还提供了另外两种 ObjectNamingStrategy 实现:IdentityNamingStrategy(基于 bean 的 JVM 标识构建 ObjectName)和 MetadataNamingStrategy(使用源级元数据获取 ObjectName)。
📄️ 使用 JSR-160 连接器
对于远程访问,Spring JMX 模块在 org.springframework.jmx.support 包中提供了两个 FactoryBean 实现,用于创建服务器端和客户端连接器。
📄️ 通过代理访问 MBeans
Spring JMX 允许您创建代理,将调用重新路由到注册在本地或远程 MBeanServer 中的 MBean。这些代理为您提供了一个标准的 Java 接口,通过该接口您可以与 MBean 进行交互。以下代码展示了如何为在本地 MBeanServer 中运行的 MBean 配置代理:
📄️ 通知
Spring 的 JMX 提供了对 JMX 通知的全面支持。
📄️ 进一步的资源
本节包含有关 JMX 的更多资源链接: