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的特性。
部分总结
📄️ 将您的Bean导出到JMX
Spring的JMX框架中的核心类是MBeanExporter。这个类负责将你的Spring Bean注册到JMX MBeanServer中。例如,考虑以下类:
📄️ 控制你的Bean的管理接口
在前一节的示例中,你几乎无法控制你的bean的管理接口。每个导出的bean的所有公共属性和方法都分别作为JMX属性和操作被公开。为了更精细地控制哪些属性和方法实际上被公开为JMX属性和操作,Spring JMX提供了一种全面且可扩展的机制来管理你的bean的管理接口。
📄️ 控制您的 Bean 的 ObjectName 实例
在幕后,MBeanExporter会委托给一个ObjectNamingStrategy的实现来为它注册的每个bean获取一个ObjectName实例。默认情况下,默认实现的KeyNamingStrategy使用bean Map中的键作为ObjectName。此外,KeyNamingStrategy还可以将bean 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 中注册的 MBeans。这些代理为你提供了一个标准的 Java 接口,通过该接口你可以与你的 MBeans 进行交互。以下代码展示了如何为在本地 MBeanServer 中运行的 MBean 配置一个代理:
📄️ 通知
Spring的JMX功能提供了对JMX通知的全面支持。
📄️ 更多资源
本节包含关于JMX的进一步资源的链接: