Spring JMX - <context:mbean-server> 的目的

Spring JMX - Purpose of <context:mbean-server>

我正在阅读 Craig Walls 的 'Spring In Action' 第 4 版一书中的 'Chapter 20 - Managing Spring bean with JMX'。本章第527页有一段。


MBean 服务器来自哪里?

根据配置,MBeanExporter 假定它在应用程序服务器(例如 Tomcat)或其他提供 MBean 服务器的上下文中 运行。但是,如果您的 Spring 应用程序将 运行 独立或位于不提供 MBean 服务器的容器中,您将需要在 Spring 上下文中配置 MBean 服务器。

在 XML 配置中,<context:mbean-server> 元素可以为您处理。 在 Java 配置,您需要采取更直接的方法并配置一个类型为 MBeanServerFactoryBean() 的 bean(这是 XML 中为您做的)。


我对上面的段落有几个问题。

  1. 是否意味着当我们运行服务器上的应用程序像Tomcat,<context:mbean-server>声明不再需要?

  2. 如果上面的说法是正确的,当我们在 Tomcat 之类的服务器或任何其他应用程序服务器上 运行 时,谁负责定位 MBean 服务器?

提前致谢!

该信息有点过时了...

or some other context that provides an MBean server.

从 Java5 开始(如果我没记错的话),JVM 有一个内置的 MBeanServer。在此之前,你必须运行在一个App服务器中,或者提供一些其他的MBeanServer比如mx4j。

无论如何,您仍然需要服务器bean 声明;它告诉 Spring 使用哪个服务器(底层 MBeanServerFactoryBeanlocateExistingServerIfPossible 被 XML 命名空间解析器设置为真。如果该标志为假,工厂 bean 将创建一个额外的 MBeanServer。