我試圖用jmx-exported方法運行一個簡單的應用程序。我不喜歡它(彈簧上下文和CGLIB的「@Configuration」在classpath中):Spring MBeanExporter - 爲MBean命名
package com.sopovs.moradanen.jmx;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jmx.export.MBeanExporter;
import org.springframework.stereotype.Component;
@Component
@Configuration
public class SpringJmxTest {
public static void main(String[] args) {
new AnnotationConfigApplicationContext("com.sopovs.moradanen.jmx");
while (true) {
Thread.yield();
}
}
@Bean
public MBeanExporter createJmxExporter() {
return new MBeanExporter();
}
public interface FooBarMBean {
public String hello();
}
@Component
public static class FooBar implements FooBarMBean {
@Override
public String hello() {
return "Hello";
}
}
}
然而,當我運行它,我得到:javax.management.MalformedObjectNameException:主要屬性不能爲空。我試圖調試和解決它:
@Component
public static class FooBar implements FooBarMBean, SelfNaming {
@Override
public String hello() {
return "Hello";
}
@Override
public ObjectName getObjectName() throws MalformedObjectNameException {
return new ObjectName("fooBar:name=" + getClass().getName());
}
}
但是有沒有更好的方式爲MBean提供名稱?
非常感謝。修改這個答案非常簡單,沒有XML - 如果有人需要它,請注意註釋。 –
我真的很感激有沒有XML!我卡住了.... – user16655