2

我正在阅读 Craig Walls 的《Spring In Action》第 4 版一书中的“第 20 章 - 使用 JMX 管理 Spring bean”。本章第 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 服务器?

提前致谢!

4

1 回答 1

1

这个信息有点过时了...

或提供 MBean 服务器的其他上下文。

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

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

于 2016-03-27T14:43:48.987 回答