SpringBoot应用程序中的JMX。无法为实现接口

时间:2017-11-10 07:12:45

标签: jmx jconsole

我有一个SpringBoot应用程序。我在整个应用程序中使用了Java配置,它工作正常。 现在我有一个要求配置JMX的要求。

在完成一些教程之后,我发现我需要在Spring启动时给出以下配置才能启用JMX。

@Bean
    public MetadataNamingStrategy getNamingStrategy() {
        MetadataNamingStrategy strategy = new MetadataNamingStrategy();
        strategy.setAttributeSource(new AnnotationJmxAttributeSource());
        return strategy;
    }

    @Bean
    public MetadataMBeanInfoAssembler getMbeanInfoAssembler() {
        return new MetadataMBeanInfoAssembler(new AnnotationJmxAttributeSource());
    }

    @Bean
    public MBeanExporter getExporter() {
        MBeanExporter exporter = new MBeanExporter();
        exporter.setAutodetect(true);
        exporter.setNamingStrategy(getNamingStrategy());
        exporter.setAssembler(getMbeanInfoAssembler());
        return exporter;
    }

执行此操作后,我可以在JMX控制台(在HCP上)中查看类(及其属性和操作)。 但对于实现接口的类,我无法在JMX控制台上看到它们。

示例:

我有一个接口TestInterface2。

package com.test.example;

public interface TestInterface2 {

    public String simpleTest2();
}


The implementation of the interface goes below.

@Component("testInterfaceImpl2")
@ManagedResource(objectName = "com.test.example:type=TestInterfaceImpl2", description = "TestInterface2 Desc")
public class TestInterfaceImpl2 implements TestInterface2 {

    @Override
    public String simpleTest2() {
        return "Simple Test";
    }

}

我试过这个。它不起作用。

但是以下内容可以在JMX控制台中看到

@Component
@ManagedResource(
                    objectName = "com.test.example:type=FormHandler",
                    description = "Form Handler implementation")
public class FormHandler {

    #implementation details here

}

有人可以建议这样做的最佳方法,或者为什么我无法将接口实现作为MBean。

0 个答案:

没有答案