---
title: 'Inselupdate: JMX mit RMI-Adaptor'
url: 'https://tutego.de/blog/javainsel/2007/08/inselupdate-jmx-mit-rmi-adaptor'
markdown: 'https://tutego.de/blog/javainsel/2007/08/inselupdate-jmx-mit-rmi-adaptor.md'
date: '2007-08-28'
description: 'Für die Anbildung an den JMX-Server dient nicht nur die JConsole, sondern verschiedene andere Wege sind denkbar, etwa über HTTP oder über einen eigenen Client, der über RMI kommuniziert. JMXConnectorServer für den Server Zur Veröffentlichung der MBeans über RMI ist der JMXConnectorServer verantwort…'
taxonomy:
  category:
    - Allgemein
---

# Inselupdate: JMX mit RMI-Adaptor

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://tutego.de/blog/javainsel/)

## Inselupdate: JMX mit RMI-Adaptor

28.08.2007 · [Christian Ullenboom](https://tutego.de/blog/javainsel/author/admin/)

Für die Anbildung an den JMX-Server dient nicht nur die JConsole, sondern verschiedene andere Wege sind denkbar, etwa über HTTP oder über einen eigenen Client, der über RMI kommuniziert.

**JMXConnectorServer für den Server**

Zur Veröffentlichung der MBeans über RMI ist der JMXConnectorServer verantwortlich. Damit die MBeans an die RMI-Registry gebunden werden, wird eine besondere `URL` verwendet, die den Service genau beschreibt. Die JMXServiceURL hat den allgemeinen Aufbau:

service:jmx:<protocol>://\[\[\[<host>\]:<port>\]/<path>\]

Vor dem Start des Programms muss die RMI-Registry für Anmeldungen bereit sein; da unser Programm auf dem gleichen Rechner arbeitet, starten wir den RMI-Namensdienst selbst.

```java
LocateRegistry.createRegistry( 1099 );
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
String url = "service:jmx:rmi:///jndi/rmi://localhost/maze"
```

JMXConnectorServer `connectorServer` = JMXConnectorServerFactory.`newJMXConnectorServer`(

```java
new JMXServiceURL( url ), null, server );
connectorServer.start();

ObjectName name = new ObjectName( "com.tutego.insel.jmx:type=Maze" );
MazeMBean maze = new Maze();
server.registerMBean( maze, name );

JOptionPane.showMessageDialog( null, "Ende" );
System.exit( 0 );
```

**JConsole mit Remote-Connection**

Mit der JConsole könnten wir nun Verbindung aufnehmen, in dem unter Remote Connection die `URL` service:jmx:rmi:///jndi/rmi://localhost/maze Einsatz findet.

**JMXConnector für den Client**

Auf der Clientseite gibt es mit JMXConnector den Gegenspieler zum JMXConnectorServer. Das Objekt liefert uns mit `getMBeanServerConnection()` ein MBeanServerConnection-Objekt, was sozusagen die Repräsentation des MBean-Servers MBeanServer auf der anderen Seite entspricht (genauso genommen gilt für die Schnittstellen: MBeanServer extends MBeanServerConnection). Über `getAttribute()` lassen sich dann zum Beispiel Properties erfragen.

```java
JMXServiceURL u = new JMXServiceURL( "service:jmx:rmi:///jndi/rmi://localhost/maze" );
JMXConnector c = JMXConnectorFactory.connect( u );
MBeanServerConnection mbsc = c.getMBeanServerConnection();
ObjectName name = new ObjectName( "com.tutego.insel.jmx:type=Maze" );
System.out.println( mbsc.getAttribute( name, "MaxNumberOfPlayers" ) );
```

**Schnittstelle und Klasse für die MBean**

```java
package com.tutego.insel.jmx;

public interface MazeMBean
{
void setMaxNumberOfPlayers( int numberOfPlayers );
int getMaxNumberOfPlayers();
void dragonAlarm();
}

package com.tutego.insel.jmx;

public class Maze implements MazeMBean
{
private int numberOfPersons;

public void setMaxNumberOfPlayers( int numberOfPersons )
{
this.numberOfPersons = numberOfPersons;
}
```

public int `getMaxNumberOfPlayers()`

```java
{
return numberOfPersons;
}

public void dragonAlarm()
{
System.out.println( "Heul. Huhuhuhu." );
}
}
```

Kategorien: [Allgemein](https://tutego.de/blog/javainsel/category/allgemein/)

[← Alle Beiträge](https://tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [JIDE Common Layer - Frische Swing-Komponenten](https://tutego.de/blog/javainsel/2007/08/jide-common-layer-frische-swing-komponenten.md)
