Java SE 8 Standard-Bibliothek  
Professionelle Bücher. Auch für Einsteiger.
 
Inhaltsverzeichnis
Immediate Wise immediate-wise.de Meinungen von Investoren
Vorwort
1 Neues in Java 8 und Java 7
2 Fortgeschrittene String-Verarbeitung
3 Threads und nebenläufige Programmierung
4 Datenstrukturen und Algorithmen
5 Raum und Zeit
6 Dateien, Verzeichnisse und Dateizugriffe
7 Datenströme
8 Die eXtensible Markup Language (XML)
9 Dateiformate
10 Grafische Oberflächen mit Swing
11 Grafikprogrammierung
12 JavaFX
13 Netzwerkprogrammierung
14 Verteilte Programmierung mit RMI
15 RESTful und SOAP-Web-Services
16 Technologien für die Infrastruktur
17 Typen, Reflection und Annotationen
18 Dynamische Übersetzung und Skriptsprachen
19 Logging und Monitoring
20 Sicherheitskonzepte
21 Datenbankmanagement mit JDBC
22 Java Native Interface (JNI)
23 Dienstprogramme für die Java-Umgebung
Stichwortverzeichnis

Jetzt Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Java SE 8 Standard-Bibliothek von Christian Ullenboom
Das Handbuch für Java-Entwickler
Buch: Java SE 8 Standard-Bibliothek

Java SE 8 Standard-Bibliothek
Pfeil 14 Verteilte Programmierung mit RMI
Pfeil 14.1 Entfernte Objekte und Methoden
Pfeil 14.1.1 Stellvertreter helfen bei entfernten Methodenaufrufen
Pfeil 14.1.2 Standards für entfernte Objekte
Pfeil 14.2 Java Remote Method Invocation
Pfeil 14.2.1 Zusammenspiel von Server, Registry und Client
Pfeil 14.2.2 Wie die Stellvertreter die Daten übertragen
Pfeil 14.2.3 Probleme mit entfernten Methoden
Pfeil 14.2.4 Nutzen von RMI bei Middleware-Lösungen
Pfeil 14.2.5 Zentrale Klassen und Schnittstellen
Pfeil 14.2.6 Entfernte und lokale Objekte im Vergleich
Pfeil 14.3 Auf der Serverseite
Pfeil 14.3.1 Entfernte Schnittstelle deklarieren
Pfeil 14.3.2 Remote-Objekt-Implementierung
Pfeil 14.3.3 Stellvertreterobjekte
Pfeil 14.3.4 Der Namensdienst (Registry)
Pfeil 14.3.5 Remote-Objekt-Implementierung exportieren und beim Namensdienst anmelden
Pfeil 14.3.6 Einfaches Logging
Pfeil 14.3.7 Aufräumen mit dem DGC *
Pfeil 14.4 Auf der Client-Seite
Pfeil 14.5 Entfernte Objekte übergeben und laden
Pfeil 14.5.1 Klassen vom RMI-Klassenlader nachladen
Pfeil 14.6 Weitere Eigenschaften von RMI
Pfeil 14.6.1 RMI und CORBA
Pfeil 14.6.2 RMI über HTTP getunnelt
Pfeil 14.6.3 Automatische Remote-Objekt-Aktivierung
Pfeil 14.7 Java Message Service (JMS)
Pfeil 14.8 Zum Weiterlesen
 
Zum Seitenanfang

14Verteilte Programmierung mit RMI Zur vorigen ÜberschriftZur nächsten Überschrift

»Ich denke, dass es einen Weltmarkt für vielleicht fünf Computer gibt.«
– Thomas Watson (1874–1956), zu seiner Zeit Vorsitzender von IBM

 
Zum Seitenanfang

14.1Entfernte Objekte und Methoden Zur vorigen ÜberschriftZur nächsten Überschrift

Bei Unterprogrammaufrufen nutzen wir die Intelligenz der Methode, die zu gegebenen Eingabeparametern Ausgangswerte liefert oder einen Systemzustand verändert. Die Methode ist in diesem Fall Anbieter einer ganz speziellen Dienstleistung. Wenn wir zu einer Eingabeanfrage eine Antwort bekommen wollen, die Implementierung dieser Intelligenz aber auf einer anderen Maschine liegt, handelt es sich um entfernte Methodenaufrufe.

Wie lässt sich so etwas elegant implementieren? Der klassische Weg führt über Client-Server-Systeme. Der Client formuliert eine Anfrage, die vom Server verstanden und interpretiert wird. So sieht dies etwa in einfacher Form mit einem Datenbankserver aus. Der Client möchte zum Beispiel den Umsatz einer Disko herausfinden. Er schickt dann eine Anfrage, und das Ergebnis wird zurückgeschickt und ausgewertet. Diese Kommunikation zwischen verteilten Prozessen muss aber aufwändig bei Client-Server-Systemen implementiert werden. Wir müssen also Parameter und Rückgabewerte verpacken, einen horchenden Server einrichten, vielleicht noch HTTP-Tunnel anlegen usw.

Wünschenswert ist eine Sicht auf entfernte Dienste wie auf Methoden innerhalb einer Laufzeitumgebung. Ideal wäre es, wenn ein Methodenaufruf auf einen Server so aussähe, als ob er eine lokale Methode wäre.

 
Zum Seitenanfang

14.1.1Stellvertreter helfen bei entfernten Methodenaufrufen Zur vorigen ÜberschriftZur nächsten Überschrift

Birrel und Nelson haben schon 1984 ein Modell vorgestellt, das entfernte Servermethoden wie lokale Methoden aussehen lässt. Die Verbindung von Client und Server realisieren so genannte Stellvertreterobjekte (engl. proxies). Diese existieren auf der Client- und auf der Serverseite. Die Stellvertretermethoden verdecken den tatsächlichen Übertragungsvorgang, sodass der Client demnach nicht mit einem eigenen Protokoll mit dem Server kommuniziert, sondern eine Methode aufruft, die so aussieht wie eine Servermethode. In Wirklichkeit nimmt die Stellvertretermethode nur die Parameter, verpackt sie in eine Serveranfrage und schickt sie weg.

Wir wollen uns dies anhand eines Beispiels klarmachen. Nehmen wir an, der Client möchte die Entschlüsselungsmethode String decrypt(String) nutzen, die in Wirklichkeit auf einem ganz anderen Rechner angeboten wird, einem, der richtige Power hat, um die hochkomplizierte mathematische Operation auszuführen. Da wir aber die Vorgabe haben, eine entfernte Methode so aussehen zu lassen wie eine lokale, wird nun decrypt(String) wie gewohnt aufgerufen:

System.out.println( decrypt( "/&sa#jkshf=0&safhq34" ) );

Der Stellvertreter auf der Client-Seite übernimmt nun das Protokoll, kümmert sich also um das Verpacken der zu transportierenden Werte, die Verschlüsselung, Authentifizierung, Kompression und um alles, was noch so gewünscht sein kann. Kurz skizziert:

String decrypt( String s ) {
// Verbindung aufbauen (etwa über Sockets)
// String s zum Server schicken (write(s))
// Auf das Ergebnis vom Server warten (result = read())
// return result;
}

Intern steckt das klassische Client-Server-Konzept dahinter, das wir schon von Sockets her kennen. Der Client mit dem Methodenaufruf initiiert die Anfrage, und der Server wartet, bis ein williger Kunde eintrifft. Der Server nimmt die Anfragen des Clients entgegen, entnimmt dem Anforderungspaket die Daten und ruft die lokale Methode auf, die auf dem Server implementiert sein kann:

String decrypt( String s ) {
return entschlüsselter String;
}

Zusätzlich kann es auf der Serverseite auch einen Stellvertreter geben, doch reicht auch ein Server aus, der zunächst auf eingehende Anfragen wartet und dann die entsprechenden Methoden ohne eigenen Stellvertreter aufruft.

An der Aufrufsyntax ist nicht abzulesen, ob der Client an einen Stellvertreter geht, der die Daten weiterleitet, und der Server merkt nicht, dass er in Wirklichkeit nicht mit lokalen Daten gefüttert wird.

 
Zum Seitenanfang

14.1.2Standards für entfernte Objekte Zur vorigen ÜberschriftZur nächsten Überschrift

Rund um diese Thematik haben sich in den letzten zwanzig Jahren diverse Standards gebildet, um mitunter auch über Betriebssystemgrenzen hinweg entfernte Dienste nutzen zu können:

  • Eine der ersten populären Implementierungen in der prozeduralen Welt stammt von Sun und ist das RPC-Protokoll(Remote Procedure Call). Es geht auf den RFC 707 aus dem Jahre 1976 zurück.

  • RMI (Remote Method Invocation) ist der Mechanismus in Java, um entfernte Objekte und deren Angebote zu nutzen. RMI ist fester Bestandteil der Java-Bibliothek seit der Version 1.1, also offiziell seit Februar 1997.

  • Im Gegensatz zu RMI definiert CORBA (Common Object Request Broker Architecture) ein großes Framework für verteilte Software-Komponenten und unterschiedliche Programmiersprachen. Die Definition von CORBA geht auf das Jahr 1991 zurück, also vor RMI, und wird von der OMG (Object Management Group) gesteuert.

  • Das Distributed Component Object Model (DCOM) ist eine Microsoft-Erfindung, um COM-Objekte über das Netz zugänglich zu machen. Später als ActiveX getarnt, hat Microsoft 2002 die .NET Remoting-API veröffentlicht, die in das .NET-Framework einzog. Später ersetzte Windows Communication Foundation (WCF) in NET 3.0 das .NET Remoting.

 


Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Java SE 8 Standard-Bibliothek Java SE 8 Standard-Bibliothek
Jetzt Buch bestellen

 Buchempfehlungen
Zum Rheinwerk-Shop: Java ist auch eine Insel
Java ist auch eine Insel


Zum Rheinwerk-Shop: Professionell entwickeln mit Java EE 8
Professionell entwickeln mit Java EE 8


Zum Rheinwerk-Shop: Besser coden
Besser coden


Zum Rheinwerk-Shop: Entwurfsmuster
Entwurfsmuster


Zum Rheinwerk-Shop: IT-Projektmanagement
IT-Projektmanagement


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo

 
 


Copyright © Rheinwerk Verlag GmbH 2018. Original - https://www.rheinwerk-verlag.de/openbook/
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.

 

 
 


21.12.2024 - Sitemap.xml