JMX-MBean-Registrierung mit Spring auf eine eigenständige JVM
Folgenden verschiedene Beispiel-Konfigurationen aus der Spring-Dokumentation sowie einige Foren im Internet, meine Anwendung, die Kontext-Datei sieht wie folgt aus:
<beans>
<bean id="dH" class="abc.def.ghi.DH">
<constructor-arg>
<value>0</value>
</constructor-arg>
<property name="num" value="100"/>
</bean>
<bean class="org.springframework.jmx.export.MBeanExporter" lazy-init="false">
<property name="beans">
<map>
<entry key="bean:name=dH1" value-ref="dH"/>
</map>
</property>
</bean>
<bean class="org.springframework.jmx.support.MBeanServerFactoryBean"/>
</beans>
Bin ich mit diesem ohne container und auf der Ebene JVM. Ich bin in der Lage, eine Verbindung zu meinem Prozess über JConsole aber die MBean nicht zeigen, bis. Allerdings registrieren die bean programmatisch stellt es erfolgreich.
MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
DH dh = new DH(0);
mbeanServer.registerMBean(dh, new ObjectName("bean:name=dH1"));
Habe ich versucht, das Spiel mit der Spring-Konfiguration, ohne Erfolg. Ich denke die Bohne ist nicht die Registrierung, um die bereits laufende MBean-server zugänglich von ManagementFactory.getPlatformMBeanServer().
Irgendwelche Ideen zu dem Problem?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Neben der Definition einer MBeanServerFactory bean (als Nicholas bereits in Ihrer Antwort) mit ...
... Sie sagen müssen, die MBeanExporter was zu verwalten:
Vorausgesetzt, Ihr
abc.def.ghi.DH
Klasse keine Implementierung der JMX-Schnittstelle, versuchen Sie, die Definition IhrerMBeanExporter
als:Blick auf das OpenJDK 7, update 2 build 21
DefaultMBeanServerInterceptor.java
Quelle, Linie 898 schafft eineDynamicMBean
für regelmäßige Objekte:Habe ich noch nicht ausgetestet, aber ich Wette
mbeanServer.registerMBean(dh, new ObjectName("bean:name=dH1"))
schließlich fordertDefaultMBeanServerInterceptor.registerObject()
werden, wodurch eineDynamicMBean
für Sie und ordnungsgemäß registriert Ihren standardJavaBean
Eigenschaften' setter und Getter.Hier sind einige test-Dateien, die Arbeit mit Spring Framework 3.0.5 und die Oracle HotSpot Java 1.6.0_24. Nachdem Sie Ihr
CLASSPATH
Umgebungsvariable, führen Sie einfachjavac *.java
undjava Main
und verwenden VisualVM (oder eine ähnliche Anwendung) zu verbinden, um die Ausführung von java-Anwendung, um den registrierten MBeans.ac.xml:
Test.java:
Main.java:
MBeanExporter
bean-definition, die ich zur Verfügung gestellt. Versuchen Sie brechen Ihr Szenario sich auf eine einfache form bekommen, dass die Arbeit, dann bauen Sie wieder auf, was Sie derzeit haben und sehen, wo Ihr Problem liegt.Das Problem mit dem MBeanServerFactoryBean.
Aus der javadoc:
Versuchen, diese config:
=================================================
Versuchen Sie, den MBeanServer in der Ausführer bean:
========================================================================
Ok, nehmen wir mal den brute-force-Ansatz und dem Erwerb der Plattform MBeanServer direkt: