【问题标题】:How to make Spring Boot Actuator available via JMX with globally enabled lazy initialization?如何通过全局启用延迟初始化的 JMX 使 Spring Boot Actuator 可用?
【发布时间】:2021-10-14 11:31:42
【问题描述】:

在我们基于 Spring Boot 2.4+ 的应用程序中,我们需要配置初始化应该在 application.properties 中延迟执行:

spring.main.lazy-initialization=true
spring.jmx.enabled=true

但是,使用此类设置无法通过 JMX 到达执行器端点。

当我们迁移到 Instana monitoring 时,现在这是一个障碍,这需要通过 JMX 使用 org.springframework.boot:type=Endpoint,name=Metricsorg.springframework.boot:type=Endpoint,name=Health MBean。

请问有没有办法让延迟初始化启用,但可以通过 JMX 访问同一个执行器?

【问题讨论】:

    标签: spring-boot jmx spring-boot-actuator


    【解决方案1】:

    这是我刚刚打开 an issue 的 Spring Boot 中的一个错误。感谢您提请我们注意。

    您可以通过从延迟初始化中排除将端点导出到 JMX 的 bean 来解决此问题。为此,请将以下 bean 添加到您的应用程序中:

    @Bean
    LazyInitializationExcludeFilter eagerJmxEndpointExport() {
        return LazyInitializationExcludeFilter.forBeanTypes(JmxEndpointExporter.class);
    }
    

    【讨论】:

    • 谢谢@andy-wilkinson,解决方法工作正常!
    【解决方案2】:

    这是 Spring Boot 中的一个错误,此后已在 Spring Boot 2.4.122.5.6 中修复。该修复程序也存在于版本2.6.0 及更高版本中。升级您的 Spring Boot 版本将解决此问题。

    错误修复

    • 启用延迟初始化后,JMX 端点不可用#28335

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-18
      • 2016-11-25
      • 2021-05-30
      • 2016-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多