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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anhand der Beschreibungen können Sie Anmerkungen zur Verfügung gestellt von Spring-Kontext @Managed -* :
Um dies zu tun, müssen Sie NICHT die Schnittstelle implementiert, mit "MBean" oder "MXBean" - suffix, weder SelfNaming.
Dann die Bohne wird erkannt werden als ein standard-spring "managed bean" wenn MBeanExporter wird registerBeanInstance(..), und werden umgewandelt zu einer ModelMBean mit aller spring-Annotationen, einschließlich Beschreibungen der Attribute, Operationen, Parameter, etc..
Als eine Voraussetzung, Sie müssen erklären, im spring-Kontext der MBeanExporter mit AnnotationJmxAttributeSource, MetadataNamingStrategy, und MetadataMBeanInfoAssembler Attribute, die vereinfacht werden können, wie diese :
oder
Und deine managed bean sollte wie folgt Aussehen :
Erinnern, um nicht implementiert eine MBean-Schnittstelle, die eine StandardMBean, und SelfNaming-Schnittstelle, die würden bypass-Feder Benennung management !
Ich wäre wirklich sehr dankbar, es zu haben, ohne xml! Ich bin stecken geblieben....
InformationsquelleAutor Donatello
Können Sie KeyNamingStrategy zu definieren, alle JMX-bezogene Eigenschaften in der XML-Konfiguration ohne compile-time Abhängigkeiten zu Spring in den Quellcode Ihrer MBean:
Wenn Sie Leben können mit etwas willkürliches Objekt-Namen, dann können Sie die IdentityNamingStrategy als ein naming-Strategie für MBeanExporter und minimieren die XML-Konfiguration Veranstaltung weiter:
InformationsquelleAutor Oleg Estekhin
Check spring-Dokumentation: http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/jmx.html Abschnitt 22.3.2, erklärt der JDK 5.0 Anmerkungen, die verfügbar sind.
Abschnitt 22.4, erklärt Mechanismen zur Verfügung, für das Objekt zu benennen.
InformationsquelleAutor Dave G