RMI minimal
Aus Byte-Welt Wiki
Version vom 13. August 2013, 15:33 Uhr von Tfa (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Kategorie:Java Kategorie:Tutorials (Java) =Einführung und Grundlagen= * RMI bedeutet Remote Method Invocation und dient dazu, auf einem Server implemen…“)
Inhaltsverzeichnis
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>