Galileo Computing < openbook >
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.


Java ist auch eine Insel von Christian Ullenboom
Buch: Java ist auch eine Insel (Galileo Computing)
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: entfernte Objekte beim Namensdienst anmelden
gp 18.8.1 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.13 RMI über die Firewalldowntop

Bei der Kommunikation der beiden Partner gibt es eine direkte Verbindung über Socket-Objekte. Diesen Sockets wird ein Port zugewiesen, so dass RMI die serialisierten Daten dann über diese zugewiesenen Ports überträgt. Dies macht jedoch Probleme bei einer Firewall, die ein internes Firmennetz schützen möchte und nur genau spezifizierte Ports, Protokolle und Richtungen offen lässt. Soll eine RMI-Lösung für ein abgeschottetes Netz entwickelt werden, stellt sich die Frage nach der einzusetzenden Technik.


Galileo Computing

18.13.1 RMI über HTTP getunnelttoptop

HTTP dient normalerweise zum Übertragen der Daten von Web-Server und Browser. RMI bietet zum Übertragen der Daten eine Lösung über HTTP an. Ist das Internet-Protokoll installiert, so lässt die Firewall die Anfragen und Antworten der Internet-Partner passieren - üblicherweise auf Port 80. Die RMI-Lösung macht es sich zunutze, dass die Daten in spezielle HTTP-Pakete eingepackt (getunnelt) werden. Dazu nutzt das Tunneling-Protokoll veränderte POST-Kommandos. Die Transportschicht des Clients generiert dann eine POST-Anfrage, wobei hier zwei unterschiedliche Verfahren zum Einsatz kommen.

gp Der Sender schickt direkt die Anfrage an den RMI-Server, der an dem Port horcht. Dieser nimmt dann aus dem POST-Paket die Daten heraus und interpretiert sie. Das wäre eine Lösung, wenn es hinter dem Sender eine Firewall gibt, aber nicht vor dem Empfänger. In dem Fall, in dem Sender und Empfänger geschützt sind, hilft ein zweites Verfahren.
gp Der Transportmechanismus arbeitet vollständig über HTTP-Anweisungen. Dann antwortet auf der Server-Seite der Web-Server, der die Anfragen weiterleiten muss. Dazu dient ein CGI-Skript, welches die Daten wiederum zum RMI-Server hoch reicht.

Auf diese Weise werden die Objekte übertragen, allerdings mit einer Verzögerung durch das zusätzliche Verpacken und dem eventuellen Aufruf des CGI-Skripts.

Das Schöne bei der Lösung ist, dass der Client dies gar nicht mitbekommt und nicht besonders konfiguriert werden muss. Soll das Verfahren ausdrücklich verboten werden, ist die Eigenschaft java.rmi.server.disableHttp auf true zu setzen.

Unter http://developer.java.sun.com/developer/onlineTraining/rmi/RMI.html findet sich von Sun eine nette Zusammenfassung (mit Aufgaben) zu RMI.





Copyright (c) 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