„Verteilte Objekte“ Java RMI CORBA

Werbung
„Verteilte Objekte“
Java RMI
CORBA
Mario Kaiser
[email protected]
Warum RMI?
Client
erwünscht Zugriff auf
JavaObjekte
Server
Java-Wrapper
(„schöne“ Objekte)
Anwendung
(Homologiesuche)
Datenbank
(„E.coli-Genom“)
TCP/IP
Inhalt
Inhaltsübersicht
1. Architekturmerkmale
2. Parameterübergabe und Serialisierung
3. Aspekte der Implementierung
4. Sicherheit
5. Beispiel
6. Java IDL (CORBA) - Übersicht
7. RMI vs. CORBA
Architekturmerkmale
Verhalten vs. Implementierung
Client
Server
Objektimplementierung
(class BlastImpl)
Objektverhalten
(interface Blast)
„RMI“
Architekturmerkmale
RMI-Schichten (jdk 1.1)
Clientanwendung
Stub
Remote
Reference
Layer
Serveranwendung
JRMP
Skeleton
Remote
Reference
Layer
Netzwerkschicht (TCP/IP, Unicast)
Architekturmerkmale
Funktionsweise von RMI
Namensdienst (RMI-Registrierung)
Naming.rebind(„rmi://host:port/Name“, obj);
Server
Naming.lookup(„rmi://host:port/Name“);
Client
Remote Object 1
Remote Object 2
Parameterübergabe und Serialisierung
Parameterübergabe
Als Rückgabewerte und Methodenparameter:
• Primitive Datentypen (char, float, int, etc.): by value
• Objekte
lokal:
by reference
entfernt: by value (!)
Als entfernte Objekte (durch Namensdienst): by reference
BlastInterface theBlast = (BlastInterface)Naming.lookup("BlastServer");
Parameterübergabe und Serialisierung
„Serialisierung (I)“
K, A, F, F, E, E, /, Z, U, C, K, E, R
Serialisierung wird benötigt für:
• das Speichern und Kopieren von Objekten
• Netzwerkoperationen mit Objekten (RMI, Sockets)
viele Objekte sind bereits serialisiert (Vector, String, File, etc.)
eigene Objekte implementieren Schnittstelle Serializable
Parameterübergabe und Serialisierung
„Serialisierung (II)“
ObjectOutputStream
ObjectInputStream in
byte[ ], char[ ]
.writeObject(obj)
(MeinObjekt) in.readObject()
class MeinObjekt implements Serializable
{
...
transient Typ Bezeichner
static Typ Bezeichner
}
Implementierungsaspekte
Entwurf der Klassen
Interface (BlastInterface)
• leitet sich von java.rmi.Remote ab
• deklariert RemoteExceptions
• ist public
Server (BlastServer)
• Sicherheit!
• Export des entfernten Objekts
• Bindung an Namensdienst
Implementierung des entfernten
Objektes (BlastImpl)
• implementiert das Interface
• falls nötig: Methoden zur
Serialisierung
•leitet sich von
UnicastRemoteObject ab
Vorsicht: Client fehlt!
Implementierungsaspekte
Kompilieren und Starten
Kompilieren
• alle Klassen kompilieren
• das entfernte Objekt mittels rmic in Stub und Skeleton auftrennen.
Starten
• Namensdienst serverseitig starten: rmiregistry
• Server starten
• Client starten
Sicherheit
Sicherheitslücken
Parameter, Rückgabewerte
•BlastClient
Client
•BlastServer
Server
•BlastInterface
•BlastImpl_Skel
•Genedata
•BlastImpl_Stub
•BlastInterface
•Genedata
Stub-Klassen
Sicherheit
Erlaubnis und Genehmigung
Client braucht Sicherheit:
•Permissions in *.policy-Datei festgehalten
grant (codebase)
{
permission.java.security.AllPermission;
};
Server braucht Sicherheit bei Client-Callbacks
CORBA
CORBA - Übersicht
• (Common Object Request Broker Adapter)
• Standard für verteilte Objekte (Hrsg.: Object Managment Group)
• Unabhängigkeit von Plattform und Sprache
• Bestandteile
• ORB (Objektmanager)
• IDL (Schnittstellensprache)
• IIOP (Internet Inter-ORB-Protocol)
CORBA
CORBA - Architektur
Clientanwendung (C++)
Serveranwendung (Java)
interface.idl
Stub (C++)
ORB
IIOP
Skeleton (Java)
ORB
Netzwerkschicht
CORBA
CORBA vs. RMI
• RMI ist pures Java - CORBA ist sprachunabhängig
• RMI erlaubt Migration von entfernten Objekten
• CORBA ist ein „erwachsener“ Standard
• RMI ist wesentlich leichter zu erlernen
• Geschwindigkeit?
Quellen
Quellennachweis
• RMI: Tutorials und WhitePaper
• http://developer.java.sun.com/developer/onlineTraining/rmi/
• http://java.sun.com/docs/books/tutorial/rmi/index.html
• http://developer.java.sun.com/developer/JDCTechTips/2001/tt0227.html
• http://java.sun.com/marketing/collateral/javarmi.html
• CORBA: Tutorials und Spezifikation
• http://developer.java.sun.com/developer/onlineTraining/corba/
• http://www.corba.org/
• Buch
• Jim Farley, Java Distributed Computing, O‘Reilly 1998
Herunterladen