【问题标题】:How to enable and expose jmx beans programatically in jetty embedded server using spring boot?如何使用spring boot在jetty嵌入式服务器中以编程方式启用和公开jmx bean?
【发布时间】:2019-12-14 18:44:02
【问题描述】:

我正在使用一些 REST 控制器开发 Spring Boot 应用程序。我想添加 JMX 支持并公开一些 Jetty 的 mbean。

尝试连接 jconsole 但失败了,所以我猜这种情况下 JMX 默认是禁用的。

问题是:如何在 Spring Boot 应用程序中启用 Jetty 的 JMX bean(将 Jetty 作为嵌入式服务器)。

【问题讨论】:

    标签: java spring-boot jetty jmx embedded-jetty


    【解决方案1】:

    我想通了。我的解决方案部分基于此doc。在 Spring Boot 中,可以通过添加自定义服务器定制器来为 Jetty 添加 JMX 支持。你需要做的就是添加这样的bean:

    @Bean
    public JettyEmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory(@Value("${server.port:8080}") final String port) {
    
        JettyEmbeddedServletContainerFactory factory =  new JettyEmbeddedServletContainerFactory(Integer.valueOf(port));
        factory.addServerCustomizers(server -> {
            // Setup JMX
            MBeanContainer mbContainer=new MBeanContainer(ManagementFactory.getPlatformMBeanServer());
            server.addEventListener(mbContainer);
            server.addBean(mbContainer);
    
            server.addBean(Log.getLog());
    
        });
        return factory;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-15
      • 2020-07-18
      • 1970-01-01
      • 2016-03-25
      • 2018-07-12
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多