RMI minimal
Aus Byte-Welt Wiki
Einführung und Grundlagen
- RMI bedeutet Remote Method Invocation und dient dazu, auf einem Server implementierte Methoden Clients zur Benutzung Verfügbar zu machen.
- Voraussetzung ist JDK 1.5. RMI funktioniert zwar auch mit älteren Java-Versionen, ist da aber sehr umständlich.
- Zuerst Service-Interface definieren.
- Danach Server implementieren und starten.
Das Service-Interface
<code=java> import java.rmi.Remote; import java.rmi.RemoteException;
/**
* Das Service-Interface. * Hier definierte Methoden werden im Server implementiert * und können von Clients aufgerufen werden. * Alle Methoden müssen "throws RemoteException" deklarieren. */
public interface Service extends Remote {
/**
* Dreht den übergebenen String um
*/
public String reverse(String input) throws RemoteException;
} </code=java>
Die Server-Klasse
<code=java> import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; import java.rmi.server.UnicastRemoteObject;
/**
* Implementierung des Service auf Serverseite */
public class Server extends UnicastRemoteObject implements Service {
protected Server() throws RemoteException {
super();
}
/** Dreht den übergebenen String um */
public String reverse(String input) {
StringBuilder sb = new StringBuilder(string);
sb.reverse().toString();
}
public static void main(String... args) throws Exception {
// RMI-Registry starten, Server erzeugen und an Registry binden
// Standard-Port ist 1099 (Registry.REGISTRY_PORT)
LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
Registry registry = LocateRegistry.getRegistry(Registry.REGISTRY_PORT);
registry.rebind("PalindromService", new Server());
System.out.println("Server läuft...");
}
} </code=java>
Der Client
<code=java> import java.rmi.Naming;
/**
* Client-Klasse zum Aufruf des RMI-Service. */
public class Client {
public static void main(String... args) throws Exception {
Service service = (Service) Naming.lookup("rmi://127.0.0.1/PalindromService");
String palindrom = "Geist ziert Leben, Mut hegt Siege, Beileid trägt belegbare Reue, "
+ "Neid dient nie, nun eint Neid die Neuerer, abgelebt gärt die Liebe, "
+ "Geist geht, umnebelt reizt Sieg.";
String res = service.reverse(palindrom);
System.out.println(res);
}
} </code=java>
