RMI minimal
Inhaltsverzeichnis
Einführung und Grundlagen
- RMI bedeutet Remote Method Invocation und dient dazu, auf einem Server implementierte Methoden, verbundenen Clients zur Verfügung zu stellen.
- In älteren Java-Versionen war das Kompilieren von RMI-Programmen etwas umständlicher. Stub und Skeleton mussten jeweils mit eigenen Compilern (rmic und javac) übersetzt werden. Seit Java 5 ist javac in der Lage alles in einem Zug zu übersetzen.
Die Vorgehensweise ist immer die Gleiche:
- Zuerst Service-Interface definieren (von
java.rmi.Remote
ableiten). - Danach Server und Client implementieren.
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); return 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>
Fragen
Das Thema wurde nicht ausreichend behandelt? Du hast Fragen dazu und brauchst weitere Informationen? Lass Dir von uns helfen!
- Besuche uns im Byte-Welt-Forum
- Besuche unseren Chat
Wir helfen dir gerne!
Dir hat dieser Artikel gefallen? Oder Du hast Fehler entdeckt und möchtest zur Berichtigung beitragen? Prima! Schreibe einen Kommentar!
Du musst angemeldet sein, um einen Kommentar abzugeben.