Printemps MBeanExporter - donnant le nom de MBean

Je suis en train de lancer une application simple avec jmx exporté méthode. Je ne l'aime (printemps-contexte et cglib pour "@" Configuration sont dans le 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";
    }
}
}

Cependant quand je le lance j'obtiens:javax.de la gestion.MalformedObjectNameException: propriétés de Clé ne peut pas être vide. J'ai essayé de déboguer et résolu avec:

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

Mais est-il une meilleure façon de fournir un nom pour MBean?

OriginalL'auteur Ivan Sopov | 2011-11-15