没有发现 springboot2 的嵌入式雄猫的 JMX mbeans



我们已经将系统升级到springboot2(springboot-2.2.2+ springCloud-Hoxton.RELEASE(,发现没有任何与Tomcat相关的JMX mbeans。以下是我通过jvisualvm连接到本地应用程序时得到的结果:

弹簧靴2-v2.2.2

Springboot2-v2.2.2+启用 JMX

我也实现了一个springboot2(v2.1.1(演示,没关系,tomcat的JMX mbeans运行良好。奇怪的是有2只雄猫。

弹簧靴-v2.1.1

弹簧靴-v1.5.3

由于我已经实现了一个端点来监视 tomcat 的线程池,这完全依赖于 tomcat 的 JMX,现在它不再工作了。请帮忙,有没有办法使用 springboot-v2.2.2 启用 tomcat 的 JMX?

要在 springboot 2.2 中启用 Tomcat JMX,必须配置以下 tomcat 定制器:

@Bean
public WebServerFactoryCustomizer<TomcatServletWebServerFactory> activateTomcatMBeanServer() {
return (factory) -> {
factory.setDisableMBeanRegistry(false);
};
}

这是在 SpringBoot Issue 16498 和版本 2.2.0.M4 中引入的。Spring Boot 利用了 Tomcat 9.0.20 的新功能,该功能允许禁用 Tomcat 的 MBeanServer (org.apache.tomcat.util.modeler.Registry. disableRegistry(( - 当 Graal 存在时,Tomcat 也会使用此开关(。相应的 Tomcat 问题是 Tomcat 问题 63361。

到现在为止,您可以简单地使用

server:
tomcat:
mbeanregistry:
enabled: true

因此,作为一种更好的弹簧启动方式

您可以使用以下虚拟机参数来解决 Mbean 未出现的问题。

-Dspring.jmx.enabled=true

最新更新