Donnerstag, 2. September 2010

Wie bekomme ich eine JMX Connection URL

Eine JMX Connection URL kann auf verschiedene Arten aufgesetzt werden. Leider ist bei den meisten ein fester RMI Port von Nöten. (Siehe z.B. hier).

Eine andere Lösung ist es, eine minimale URL zu verwenden und die Engine den Rest machen zu lassen. Dies führt zu folgendem Code:

MBeanServer mbs = MManagementFactory.getPlatformMBeanServer();
JMXServiceURL url = new JMXServiceURL("rmi", null, 0);
JMXConnectorServer server = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);
server.start();

url = server.getAddress();

Die URL wird dann durch eine kryptische URL ersetzt, mit der man sich auf den MBeanServer verbinden kann.

Wenn die PID des Prozesses des Prozesses bekannt ist, kann alternativ folgende Lösung verwendet werden. Diese benutzt jedoch interne sun Klassen.