Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger

Java ist auch eine Insel von Christian Ullenboom
Programmieren für die Java 2-Plattform in der Version 5 (Tiger-Release)
Buch: Java ist auch eine Insel
gp Kapitel 18 Verteilte Programmierung mit RMI und SOAP
  gp 18.1 Entfernte Methoden
    gp 18.1.1 Wie entfernte Methoden arbeiten
    gp 18.1.2 Stellvertreter (Proxy)
    gp 18.1.3 RMI
    gp 18.1.4 Wie die Stellvertreter die Daten übertragen
    gp 18.1.5 Probleme mit entfernten Methoden
  gp 18.2 Nutzen von RMI bei Middleware-Lösungen
  gp 18.3 Die Lösung für Java ist RMI
    gp 18.3.1 Entfernte Objekte programmieren
    gp 18.3.2 Entfernte und lokale Objekte im Vergleich
  gp 18.4 Definition einer entfernten Schnittstelle
  gp 18.5 Das entfernte Objekt
    gp 18.5.1 Der Bauplan für entfernte Objekte
    gp 18.5.2 Der Konstruktor
    gp 18.5.3 Implementierung der entfernten Methoden
  gp 18.6 Stellvertreterobjekte erzeugen
    gp 18.6.1 Das Dienstprogramm rmic
  gp 18.7 Der Namensdienst (Registry)
    gp 18.7.1 Der Port
  gp 18.8 Der Server
    gp 18.8.1 Entfernte Objekte beim Namensdienst anmelden
    gp 18.8.2 Automatisches Anmelden bei Bedarf
  gp 18.9 Einen Client programmieren
    gp 18.9.1 Einfaches Logging
  gp 18.10 Aufräumen mit dem DGC
  gp 18.11 Entfernte Objekte übergeben und laden
    gp 18.11.1 Klassen vom RMI-Klassenlader nachladen
    gp 18.11.2 Sicherheitsmanager
  gp 18.12 Registry wird vom Server gestartet
  gp 18.13 RMI über die Firewall
    gp 18.13.1 RMI über HTTP getunnelt
  gp 18.14 RMI und CORBA
  gp 18.15 UnicastRemoteObject, RemoteServer und RemoteObject
  gp 18.16 Daily Soap
    gp 18.16.1 SOAP-Implementierung der Apache-Gruppe
    gp 18.16.2 Einen Client mit der Apache-Bibliothek implementieren
    gp 18.16.3 Der Seifen-Server
  gp 18.17 Java-API für XML Messaging (JAXM)
  gp 18.18 Java Message Service (JMS)
    gp 18.18.1 OpenJMS
    gp 18.18.2 Beispiel mit Konsument und Produzent im Publish–Subscribe–Modell


Galileo Computing

18.3 Die Lösung für Java ist RMdowntop

Damit RMI funktioniert, sind drei Teile mit der Kommunikation beschäftigt:

1. Der Server stellt das entfernte Objekt mit der Funktion bereit. Die Funktion läuft im eigenen Adressraum, und der Server leitet Anfragen an diese Funktion weiter.
       
2. Der Namensdienst (Registry) ist ein Anfragedienst, der Objekte und ihre Methoden mit einem eindeutigen Namen verbindet. Der Server meldet Objekte mit ihren Funktionen bei diesem Namensdienst an.
       
3. Der Client ist der Nutzer des Dienstes und ruft die Methode auf einem entfernten Objekt auf. Auch er hat einen eigenen Adressraum. Möchte der Client eine Funktion nutzen, so fragt er bei dem Namensdienst an, um Zugriff zu bekommen.
       

Galileo Computing

18.3.1 Entfernte Objekte programmieren  downtop

Um entfernte Objekte mit ihren Methoden in Java-Programmen zu nutzen, müssen wir einige Schritte machen, die im Folgenden kurz skizziert werden. An den Schritten spiegelt sich der Programmieraufwand wider:

1. Wir geben eine entfernte Schnittstelle an, die die Methode(n) definiert.
       
2. Wir implementieren eine Klasse, die die Schnittstelle implementiert und die Methode mit Leben füllt. Dies bildet das entfernte Objekt. Die Klasse muss zusätzlich einen speziellen Konstruktor besitzen.
       
3. Existiert die Implementierung, benötigen wir ein Exemplar dieses Objekts. Wir melden es bei einem Namensdienst an, damit andere es finden können. Dies bildet den Server.
       
4. Im letzten Schritt demonstrieren wir die entfernte Methode an einem Beispiel.
       

Galileo Computing

18.3.2 Entfernte und lokale Objekte im Vergleictoptop

Vergleichen wir entfernte Objekte und ihre Methoden, so fallen Gemeinsamkeiten ins Auge. Die Referenzen auf entfernte Objekte lassen sich wie gewohnt nutzen, etwa als Argumente einer Funktion oder als Rückgabewert. Dabei ist es egal, ob die Methode mit den Argumenten oder Rückgabewerten lokal oder entfernt ist. Die Unterschiede zu lokalen Objekten sind aber deutlicher. Da ein Client immer über eine entfernte Schnittstelle das Objekt repräsentiert, hat es nichts mit der tatsächlichen Implementierung zu tun, und daher ist auch eine Typumwandlung unmöglich. Die einzige Umwandlung von einer entfernten Schnittstelle ist in Remote. Damit ist auch deutlich, dass instanceof auch nur testen kann, ob das Objekt entfernt ist oder nicht; die echte Vererbung auf der Server-Seite bleibt verborgen.





Copyright © Galileo Press GmbH 2004
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de