我有一个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。