Spring JMX 주석을 사용하여 일부 정보를 내보내려고합니다 (xml : D가 없음). 나는 String과 Integer 타입을 내보내기를 성취 하였지만, 나는 내가 생성 한 클래스의 어떤 객체도 export 할 수 없었다.Spring JMX 주석을 사용하여 객체 내보내기
이것은 @Configuration 클래스입니다.
@Configuration
@EnableMBeanExport
@ComponentScan({"my.packages"})
public class AppManager {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.register(AppManager.class);
context.refresh();
try {
TimeUnit.MINUTES.sleep(30);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Bean(name = "jmxExporter")
public Exporter jmxExporter() {
return new Exporter();
}
}
이것은 내가 갖고 싶은 몇 가지 특성이있는 클래스입니다.
public class MyClass implements Serializable {
private int param1;
private int param2;
private int param3;
public MyClass() {
// calculate all params
}
public int getParam1() {
return this.param1;
}
public int getParam2() {
return this.param2;
}
public int getParam3() {
return this.param3;
}
}
이것은 속성을 내보내는 클래스입니다.
import org.springframework.jmx.export.annotation.ManagedAttribute;
import org.springframework.jmx.export.annotation.ManagedResource;
@ManagedResource(objectName = "my.packages:type=JMX,name=Exporter")
public class Exporter {
@ManagedAttribute
public String getString() { //This works!
return "Test string";
}
@ManagedAttribute
public MyClass getMyClass() { //This does not work
return new MyClass();
}
}
개별적으로 내보낼 수없는 실시간 정보가 있기 때문에 매번 MyClass 개체를 만들어야합니다.
JConsole에서 속성 값은 "사용할 수 없음"입니다.
저는 JMX를 처음 접했고 분명히 누락되었습니다.
도움 주셔서 감사합니다.