RMI minimal: Unterschied zwischen den Versionen
Aus Byte-Welt Wiki
KKeine Bearbeitungszusammenfassung |
KKeine Bearbeitungszusammenfassung |
||
| Zeile 87: | Zeile 87: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=Anwendungsbeispiel= | |||
*[[Java-Programm nur einmal starten]] | |||
{{Fragen stellen}} | {{Fragen stellen}} | ||
Aktuelle Version vom 9. März 2018, 18:44 Uhr
Einführung und Grundlagen
[Bearbeiten | Quelltext bearbeiten]- 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.Remoteableiten). - Danach Server und Client implementieren.
Das Service-Interface
[Bearbeiten | Quelltext bearbeiten]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;
}
Die Server-Klasse
[Bearbeiten | Quelltext bearbeiten]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...");
}
}
Der Client
[Bearbeiten | Quelltext bearbeiten]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);
}
}
Anwendungsbeispiel
[Bearbeiten | Quelltext bearbeiten]
Fragen
[Quelltext bearbeiten]Das Thema wurde nicht ausreichend behandelt? Du hast Fragen dazu und brauchst weitere Informationen? Lass Dir von uns helfen!
- Besuche unseren Chat
Wir helfen dir gerne!
