Ich habe eine Web-Anwendung auf JBoss ausgeführt wird 4.2.2. Um die Leistung zu überwachen habe ich die interne Plattform JMX-Server aktiviert, die Schiffe mit Java 5. Mit anderen Worten, ich hinzugefügt:Erzwingen Spring MBeanExporter eine bestimmte MBeanServer verwenden
-Dcom.sun.management.jmxremote
auf JBoss' Startskript. Dies funktioniert wie erwartet. Als Folge davon sind nun alle MBeans auf der Plattform MBeanServer registriert. Ich möchte das nicht, ich möchte, dass sie auf dem MBeanServer von JBoss registriert werden.
Die Schwierigkeit liegt in der Tatsache, dass ich meinen Frühling Managed Beans registrieren. Dazu wird MBeanExporter
verwendet. Daher muss ich meinem MBeanExporter
mitteilen, dass der MBeanServer von JBoss beim Registrieren von Beans verwendet werden soll. Um jedoch die nur ausgesetzt Verfahren in MBeanExporter
beeinflussen, was Server verwendet wird setServer(MBeanServer mBeanServer)
ist. Das Problem ist, dass ich nur wissen, wie einen Verweis auf die richtigen MBeanServer programmatisch zu bekommen, und nicht in Spring XML, wo die MBeanExporter
deklariert wird.
erscheint Meine Optionen zu sein:
- eine Unterklasse zu
MBeanExporter
schreiben, bestimmte Methoden überschreiben, so dass die korrekte MBeanServer einePostBeanProcessor
- schreiben, die findet JBoss' MBeanServer und ruft dann geladen wird
setServer
- JNDI? Funktioniert nur, wenn der MBeanServer in JNDI verfügbar gemacht wird und ich ihn nicht finden konnte.
Was ist der idiomatische Weg? Mache ich etwas wirklich Dummes?
Großartig! Genau das habe ich gesucht. Ich habe vorher die Fabrik-Methode benutzt, aber ich habe nicht gesehen, dass es perfekt für diese Verwendung war. – waxwing