Frühjahr MBeanExporter - Namen geben, MBean

Ich versuche, führen Sie eine einfache Anwendung mit der jmx-exportierte Methode. Ich mache es wie (spring-Kontext und cglib für "@ - Konfiguration" im classpath):

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";
    }
}
}

Aber wenn ich es laufen lasse bekomme ich:javax.management.MalformedObjectNameException: Schlüssel-Eigenschaften können nicht leer sein. Ich habe versucht, zu Debuggen und es gelöst mit:

@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());
    }
}

Aber gibt es eine bessere Möglichkeit geben einen Namen für die MBean?

InformationsquelleAutor Ivan Sopov | 2011-11-15

Schreibe einen Kommentar