UNIVERSITÄT LEIPZIG. Mainframe Internet Integration SS2013. Java Remote Method Invocation RMI Beispiel

Größe: px
Ab Seite anzeigen:

Download "UNIVERSITÄT LEIPZIG. Mainframe Internet Integration SS2013. Java Remote Method Invocation RMI Beispiel"

Transkript

1 UNIVERSITÄT LEIPZIG Mainframe Internet Integration Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013 Java Remote Method Invocation RMI Beispiel el0100 copyright Abt. Technische Informatik, Institut für Informatik, Univ. Leipzig wgs 04-11

2 RMI Tutorial Was hier folgt, ist ein RMI Tutorial. Es ist nicht abgabepflichtig und wird hier aufgeführt, um ggf. Ihr Verständnis zu verbessern. Falls Sie Lust haben, können Sie es auf Ihrem PC implementieren. Ein Zugriff auf z/os ist nicht vorgesehen.

3 Ein einfaches RMI Beispiel Wir implementieren als ein einfaches Beispiel die folgende Anwendung. Client Server Registry Ein Klient sendet eine Anfrage an ein Server Objekt. Dieses erzeugt eine Antwort und sendet sie an den Klienten zurück. Damit der Klient das Server Objekt finden kann konsultiert er einen Namensdienst, die Java Registry. Normalerweise laufen Klient und Server auf getrennten Rechnern, die über ein TCP/IP Netz miteinander verbinden sind. In unserem einfachen Fall laufen sie als getrennte Prozesse in getrennten virtuellen Adressenräumen auf dem gleichen Rechner. Das Klientenprogramm QuadratClient sendet eine Ziffer an den Server. Dieser multipliziert die Ziffer mit sich selbst und sendet das Ergebnis zurück an den Klienten. Dieser gibt das Ergebnis auf dem Bildschirm aus.

4 Die Objekt-Registrierung rmiregistry Wie bekommt ein Client Zugriff auf ein Quadrat-Objekt? Wir wissen: Stub für Client, Skeleton für Server. Der Server muss das Skeleton unter einem (möglichst eindeutigen) Namen bei einer rmiregistry anmelden. Diese rmiregistry muss auf demselben Rechner laufen, auf dem das Remote-Objekt (Skeleton) ausgeführt wird! Der Client muss 1. den URL der rmiregistry kennen, von der er einen Stub des Objekts bekommen kann (z.b. : rmi://jedi.informatik.uni-leipzig.de:4711, und 2. den Namen des Objekts kennen, unter dem der Stub bei der Registry bekannt ist.

5 Vorgehensweise und Programmstruktur (1) In unserem Beispiel fordert ein Klient das Quadrat einer (Biginteger-) Zahl von dem Server an. Dies geschieht, indem er eine Methode Quadrat(BigInteger ) des Servers mit Benutzung der entfernten Referenz eines Serverobjekts aufruft. Auf der Seite des Servers werden wir dann die folgenden Schritte durchführen: 1. Eine Quadrat Schnittstelle (Quadrat.java) definieren; 2. Eine QuadratImpl Klasse (QuadratImpl.java) schreiben, welche die Quadrat Schnittstelle implementiert; 3. Eine Server Klasse (QuadratServer.java) mit einer main() Funktion für die Erzeugung des entfernten Objektes und seine Anbindung an das RMI-Registry schreiben.

6 Vorgehensweise und Programmstruktur (2) Interface Implementierung Client Server Unsere Anwendung heist Quadrat und besteht aus 4 Java Programmen: Quadrat.java QuadratImpl.java QuadratServer.java QuadratClient.java Sie bewirkt folgendes: Die File Quadrat.java definiert das entfernte Objekt. Es ist möglich, die Server Funktionen einer einzigen Klasse mit einer main() Funktion zu vereinigen. Die Aufteilung hat den Vorteil, dass mehrere entfernte Objekte mit einer main() Funktion erzeugt werden können. Die entfernte Interface implementiert QuadratImpl.java. Die Klasse QuadratImpl.java soll als Vorlage für die Erzeugung von Skeleton und Stub dienen und benutzt dafür die in Quadrat.java definierte Schnittstelle. Die Klasse QuadratServer.java soll eine main()-funktion beinhalten mit folgenden Aufgaben: Einen RMISecurityManager erzeugen und installieren und das entfernte Objekt bei der rmiregistry registrieren

7 Definition einer entfernten Schnittstelle Damit der Client eine entfernte Methode nutzen kann, muss er ein Stellvertreterobjekt befragen. Dieses packt die Daten ein und übermittelt sie. Diese Hilfsfunktionen sollen automatisch generiert werden. Damit der Generator korrekten Quellcode für die Übertragung erstellen kann, ist eine Beschreibung nötig. Die Definition muss die Signatur eindeutig spezifizieren, und damit weiß der Client, wie die Funktion aussieht, die er aufrufen kann, und der Server kann die Methode dann beschreiben. Normalerweise gibt es für die Spezifikation der entfernten Funktionen spezielle Beschreibungssprachen (wie IDL bei CORBA), doch bei RMI reicht es, ein Java-Interface mit den Methoden zu definieren.

8 Interface Quadrat.java Entfernte Methoden werden durch das Interface java.rmi.remote definiert: // Interface import java.rmi.*; import java.math.biginteger; public interface Quadrat extends Remote { public BigInteger quadrat(biginteger n) throws RemoteException; } Die entfernten RMI-Klassen sind durch Schnittstellen spezifiziert, welche java.rmi.remote erweitern sollen. In einer entfernten Schnittstelle werden die Methoden deklariert, die man von anderen Java Virtuellen Maschinen aufrufen kann. Für unser Beispiel definieren wir eine einzige Schnittstelle Quadrat, für die wir die Methode Quadrat(BigInteger ) deklarieren. Die Schnittstelle muss public sein, damit Klienten Zugang auf sie haben können. Eine RemoteException kann z.b. bei Kommunikations-fehlern auftreten: wenn das entfernte Objekt nicht mehr verfügbar ist, wenn das Netz gestört ist.

9 Eigenschaften der Schnittstellen-Beschreibung Wir können mehrere wichtige Eigenschaften der Schnittstelle feststellen: Die entfernte Schnittstelle ist öffentlich. Wenn sie nur paket-sichtbar oder eingeschränkter ist, kann der Client die entfernte Methode nicht finden, wenn er danach verlangt. Die eigene Schnittstelle erweitert die Schnittstelle Remote. Nur die Klassen, die Remote implementieren, können entfernte Methoden anbieten. Remote ist allerdings leer und damit eine Markierungsschnittstelle. Die angebotenen Methoden können nicht beabsichtigte Fehler auslösen, zum Beispiel, wenn das Transportsystem zusammenbricht. Für diesen Fall muss jede Methode RemoteException in einer throws-anweisung aufführen. Eine entfernte Funktion darf Parameter besitzen. Sind die Argumente primitive Werte, so werden diese einfach übertragen. Handelt es sich um Objekte, so müssen diese serialisierbar sein.

10 QuadratImpl.java // QuadratImpl.java, Quadrat implementation import java.rmi.*; import java.rmi.server.unicastremoteobject; import java.math.biginteger; import java.math.biginteger.*; public class QuadratImpl extends UnicastRemoteObject implements Quadrat { private int sum; public QuadratImpl() throws RemoteException { super(); } } public BigInteger quadrat(biginteger n) throws RemoteException { BigInteger res = new BigInteger("0"); res = n.multiply(n); return res; } Die QuadratImpl Klasse (QuadratImpl.java) implementiert die Quadrat Schnittstelle (Quadrat.java). Nur die in der entfernten Schnittstelle (Quadrat.java) deklarierten Methoden (hier quadrat(biginteger n) )können von Klienten aufgerufen werden. Server-Programme implementieren das Interface Remote und erweitern PortableRemoteObject, welches die wichtigsten Methoden für die Verwendung von RMI bereitstellt. Statt UnicastRemoteObject wird häufig PortableRemoteObject verwendet. PortableRemoteObject ermöglicht zusätzlich den Einsatz von RMI/IIOP.

11 Die Methoden des Servers werden letztendlich vom Client über die Stellvertreter genutzt. Der Server muss unterschiedliche Vorgaben erfüllen: Er muss eine spezielle Klasse erweitern, einen Konstruktor anbieten und die entfernte Schnittstelle implementieren. Dann kann ein Server-Objekt angemeldet werden. Das Server-Objekt implementiert daher die Geschäftslogik Da die Klasse eine Implementierung der Schnittstelle ist, geben wir ihr die Endung Impl. (Das ist eine bekannten Namensgebung aber keine Pflicht.) Die Implementierung erweitert die Klasse UnicastRemoteObject. Sie liegt im Paket java.rmi.server. Diese Klasse UnicastRemoteObject bietet Hilfe bei der Übertragung der Daten mittels Standard-TCP-Sockets an. Der Server kann so auf eingehende Anfragen reagieren und diese bearbeiten. Weiterhin zeigt UnicastRemoteObject an, dass ein Exemplar unserer Klasse existieren soll. Für den Konstruktor eines entfernten Objekts gelten zwei Eigenschaften: Wir müssen einen Standard-Konstruktor anbieten, und dieser muss ebenso wie die Methoden RemoteException anzeigen. public QuadratImpl() throws RemoteException { } Der Standard-Konstruktor ist notwendig, da eine Unterklasse genau diesen aufrufen möchte. Unser Konstruktor muss nichts machen. Er ruft aber automatisch den Konstruktor der Oberklasse auf, also den von UnicastRemoteObject. UnicastRemoteObject hilft bei der Übertragung; wenn ein entferntes Objekt konstruiert wird, dann bindet er diesen Dienst an einen anonymen Port und horcht auf einkommende Aufrufe. Wollten wir einen speziellen Port nutzen, müssten wir im Konstruktor unserer Unterklasse einen parametrisierten Konstruktor von UnicastRemoteObject aufrufen, der einen Port annimmt.

12 Im nächsten Schritt müssen die Methoden der Schnittstelle implementiert werden. Es steht frei, andere Methoden anzugeben, die nicht in der Schnittstelle vorgegeben sind, doch diese sind dann natürlich nicht nach außen sichtbar. public BigInteger quadrat(biginteger n) throws RemoteException { BigInteger res = new BigInteger("0"); res = n.multiply(n); return res; } Die Argumente und Rückgabewerte können von jedem beliebigen Datentyp sein.

13 RPC RPC RPC Service Service Service RPC Server andere Prozesse Betriebssystem Kernel Die RPC Services (RPC Dienstprogramme) können entweder in getrennten virtuellen Adressenräumen laufen, oder alternativ als Threads innerhalb eines virtuellen Adressenraums implementiert werden. Ein RPC Service wird auch als Implementation bezeichnet. Häufig Hunderte oder Tausende unterschiedlicher RPC Services auf dem gleichen Rechner. Der RPC Server stellt Verwaltungsdienste für seine RPC Services zur Verfügung, z.b. das Binding. Auf einem Rechner können mehrere RPC Server laufen, die z.b. unterschiedliche Arten von RPC Services gruppieren.

14 QuadratServer.java // QuadratServer.java import java.net.*; import java.rmi.*; import java.rmi.server.*; public class QuadratServer { public static void main(string args[]) { // Create and install the security manager System.setSecurityManager (new RMISecurityManager()); try { // Create QuadratImpl QuadratImpl QDR = new QuadratImpl(); Naming.rebind("Quadrat", QDR); System.out.println ("Quadrat Server ready."); } catch (RemoteException e) { System.out.println ("Exception: " + e.getmessage()); } catch (MalformedURLException e) { System.out.println(e); } } } Das Server-Programm enthält eine main()-funktion, die die ganze Anwendung startet. Ein QuadratImpl Objekt, das auf Abfragen von Klienten wartet, wird dabei erzeugt und mit einem Namen bei der Registry angemeldet.

15 Die java.rmi Package enthält eine Default Security Manager Implementierung die mit System.setSecurityManager(new RMISecurityManager()); installiert wird.

16 In unserer Serverklasse haben wir 1. einen security manager erstellt und installiert: System.setSecurityManager(new RMISecurityManager()); Ohne dies ist kein entfernter Methodenaufruf möglich. 2. eine Instanz eines entfernten Quadrat Objekts erstellt: QuadratImpl QDR = new QuadratImpl(); Dieses Objekt wird automatisch exportiert, da die Implementierungsklasse die PortableRemoteObject Klasse erweitert. 3. das entfernte Objekt beim Namensdienst mit der Methode rebind() eingetragen (mit dem RMI-registry registriert): Naming.rebind("Quadrat", QDR); Die Funktion rebind() bindet den Namen "Quadrat" an die Referenz des entfernten Objekts (der Name Quadrat wird mit dem Objekt QDR gebunden). Klienten können danach einen lookup nach dem Objekt mit diesem Namen ausführen und dadurch eine entfernte Referenz auf das Objekt erhalten.

17 QuadratClient.java // QuadratClient.java import java.rmi.*; import java.math.biginteger; public class QuadratClient { public static void main(string args[]) { BigInteger res; Remote remote = null; System.setSecurityManager (new RMISecurityManager()); //System.out.println (System.getSecurityManager()); try { remote = Naming.lookup("rmi://" +args[0]+ "/Quadrat"); Quadrat myqdr = (Quadrat) remote; System.out.println("OK"); BigInteger n = new BigInteger(args[1]); res =myqdr.quadrat(n); System.out.println(res); } catch(exception e) { System.err.println("System Exception" + e); } } } System.exit(0);

18 Das Klientenprogramm QuadratClient.java nimmt 2 Argumente auf der Kommandozeile auf: Den Namen der Servermaschine, wo das entfernte Objekt registriet ist, und die Zahl, von der das Quadrat berechnet soll Unser Klientenprogramm ist zunächst ein normales Java-Programm. Um die entfernte Methode Quadrat(Biginteger ) des Servers aufrufen zu können, werden wir in der entsprechenden main() Funktion die folgende Schritte durchführen: einen Securitymanager erstellen und installieren; einen lookup()-aufruf ausführen, um eine Referenz auf das entfernte Objekt zu bekommen: Naming.lookup("rmi://Serverhost/Quadrat"); Um nun die entfernte Methode zu nutzen, muss ein entferntes Objekt gesucht und angesprochen werden. Dazu fragen wir den Namensdienst. Der Name für das Objekt setzt sich zusammen aus der URL und dem Namen des Dienstes. Bei Port-Angaben dürfen wir nicht vergessen, diesen wieder hinter einem Doppelpunkt anzugeben. Der Typ des entfernten Objektes, den die Naming.lookup() Methode zurückgibt, muss der Typ der entfernten Schnittstelle Quadrat sein. In unserer Klientenanwendung werden die Adresse der Servermaschine in args[0], und die Zahl, von der das Quadrat berechnet soll, in args[1] eingegeben.

19 Vorgehensweise 1. Interface definieren, mit der das Remote Object aufgerufen wird. > extends interface java.rmi.remote. 2. Implementierung der Server Anwendung schreiben. Muss die Remote Interface implementieren.. > extends java.rmi.server.unicastremoteobject 3. Klassen kompilieren. 4. Mit dem Java RMI Compiler Client Stubs und Server Skeletons erstellen. > rmic xyzserverimpl 5. Klient implementieren und übersetzen. 6. Start Registry, Server starten, Klienten starten.

20 Rmic Compiler Optionen Bevor rmic zum Zuge kommt, müssen die entfernten Klassen und Schnittstellen übersetzt sein. Danach geben wir auf der Kommandozeile ein: rmic QuadratImpl Die erzeugten Klassen werden standardmäßig im aktuellen Verzeichnis platziert. (Mit der Option -D lässt sich der Zielort ändern.) Das RMI-Protokoll gibt es mittlerweile in unterschiedlichen Version. Mit dem Schalter vxxx beziehungsweise -iiop lässt sich dies genauer angeben. Weitere rmic Compiler Optionen: -v1.1 erzeugt Stub und Skeleton für das Protokoll unter JDK v1.2 erzeugt den Stub für das Java-SDK 1.2. Skeletons werden dort benötigt, da das System automatisch die Methoden des Servers findet und aufruft. -vcompat Das Standardprotokoll unter dem JDK 1.2. Es ist kompatibel mit dem neuen 1.2 Stub-Protokoll und dem älteren von iiop erstellt die für CORBA passenden Bausteine (neben iiop hat Corba weitere Protokolle standardisiert, die aber nur wenig Bedeutung haben). Mit der Option -idl kann zusätzlich für CORBA eine Spezifikationsdatei erstellt werden. Möchten wir zu den generierten Klassen den Quellcode sehen, so müssen wir -keep angeben. An den generierten Klassen lässt sich schön ablesen, wie die Kommunikation über die Leitung wirklich abgewickelt wird.

21 Der RMI Namensdienst (Registry) Durch den Namensdienst kann ein Server entfernte Objekte mit einem Namen anmelden, und Clients können die entfernten Objekte unter einem Namen finden. Für den Namensdienst können unterschiedliche Programme eingesetzt werden, beim Java-SDK ist ein einfaches Programm dabei. Der beigefügte Namensdienst ist ein vereinfachter Object Request Broker (ORB), wie er bei CORBA bekannt ist. Unter Windows starten wir den Dienst in einer DOS-Box als getrennten Prozess (sozusagen im Hintergrund) mit folgender Zeile: start rmiregistry Die Registry können wir uns somit als einen einfachen Assoziativspeicher vorstellen, der Namen und Stub-Objekte verbindet. Der Zustand des Stubs wird bei der Registry hinterlegt.

22 Registry Port Der Namensdienst läuft standardmäßig auf dem Port Für Dienste hinter einer Firewall ist es bedeutend, dass dieser Port auch anders lauten kann. Eine andere Port-Nummer lässt sich einfach als Argument angeben: start rmiregistry 2001 Der angegebene Port dient nur der Vermittlung vom Client zum Namensdienst. Die Kommunikation von Client und Server läuft über einen anderen Port.

23 Implementierung Schritt 1: Vorgefertigte Java Programme übersetzen Wir kompilieren die vorgefertigten Client- und Server-Quellcode-Programme. Hierzu die DOS Kommando-Zeile Eingabe Aufforderung aufrufen. In das Verzeichnis C:\example\jrmp wechseln. Das Verzeichnis enthält 4 *.java Files. C:\example\jrmp>dir Verzeichnis von C:\example\jrmp :01 <DIR> :01 <DIR> :29 76.java.policy : Quadrat.java : QuadratClient.java : QuadratImpl.java : QuadratServer.java

24 C:\example\jrmp>javac *.java C:\example\jrmp>dir Verzeichnis von C:\example\jrmp :01 <DIR> :01 <DIR> :29 76.java.policy : Quadrat.java : QuadratClient.java : QuadratImpl.java : QuadratServer.java : Quadrat.class : QuadratClient.class : QuadratImpl.class : QuadratServer.class

25 Diese 4 *.java Files übersetzen mit javac *.java Wenn die Eingabeaufforderung ohne Ausgabe einer weiteren Meldung erscheint, war die Übersetzung erfolgreich. In dem Verzeichnis C:\example\jrmp befinden sich jetzt zusätzlich zu den 4 *.java Files weitere 4 entsprechende *.class Files. C:\example\jrmp>javac *.java C:\example\jrmp>dir Verzeichnis von C:\example\jrmp :01 <DIR> :01 <DIR> :29 76.java.policy : Quadrat.java : QuadratClient.java : QuadratImpl.java : QuadratServer.java : Quadrat.class : QuadratClient.class : QuadratImpl.class : QuadratServer.class

26 Stub- und Skeleton-Compiler rmic Für eine Klasse, die das Interface Remote implementiert, erzeugt der RMI-Compiler rmic die benötigten Stubs und Skeletons. Der Aufruf erzeugt: rmic QuadratImpl QuadratImpl_Stub.class und QuadratImpl_Skel.class

27 Implementierung Schritt 2: Stubs und Skeletons mit dem rmic Compiler erzeugen Jetzt für die vorgefertigte Server Anwendung QuadratImpl mit Hilfe des rmic Compilers Stubs und Skeletons erstellen mit dem Kommando rmic QuadratImpl Jetzt befinden sich in dem Verzeichnis C:\example\jrmp zusätzlich die beiden class Files QuadratImpl_Skel.class und QuadratImpl_Stub.class. C:\example\jrmp>rmic QuadratImpl C:\example\jrmp>dir Verzeichnis von C:\example\jrmp :01 <DIR> :01 <DIR> :29 76.java.policy : Quadrat.java : QuadratClient.java : QuadratImpl.java : QuadratServer.java : Quadrat.class : QuadratClient.class : QuadratImpl.class : QuadratServer.class : QuadratImpl_Stub.class : QuadratImpl_Skel.class C:\example\jrmp>

28 Die Policy Sicherheitsaspekte Wenn eine benötigte class-datei von einem öffentlichen Web-Server oder aus einem entfernten Verzeichnis(-Dienst) geholt werden soll, müssen gewisse Regelungen bzgl. Sicherheit getroffen werden. Für diesen Zweck wird in den RMI-Programmen der RMISecurityManager gesetzt. Dieser verhält sich gemäß den Regeln, die in der Datei $HOME/.java.policy angegeben werden. Am einfachsten, aber auch am unsichersten, wäre folgendes.java.policy: grant { permission java.security.allpermission; }; RMI (bzw. das zugrunde liegende Protokoll JRMP) verwendet Sockets, deshalb müssen mindestens SocketPermissions gesetzt werden, etwa: grant { permission java.net.socketpermission "localhost", "accept,connect,listen"; permission java.net.socketpermission "*. lrz-muenchen.de", "accept,connect,listen"; };

29 Die Pakete java.rmi und java.rmi.server selbst definieren keine Permissions. Daher müssen in.java.policy keine weiteren RMI-spezifische Permissions gesetzt werden. Einen Überblick über mögliche Permissions gibt Weitere Beispiele für Policy-Files z.b. in Zur Erstellung der Datei.java.policy kann auch das GUI-basierte policytool aus dem JDK verwendet werden. Dokumentation in

30 Damit sind wir in der Lage, unsere Anwendung in Betrieb zu nehmen. Neben unserem Klienten brauchen wir 3 weitere Prozesse: den eigentlichen Server Prozess den Namensdienst Java Registry den RMISecurityManager, das Policy Tool In unserem Beispiel laufen diese drei Prozesse auf dem gleichen Rechner wie der Klient. In diesen Prozessen laufen eigene JVMs (Java virtuelle Maschinen). In der Praxis würden diese Prozesse normalerweise auf getrennten Servern laufen, obwohl es durchaus sinnvoll sein kann, mehrere JVMs auf dem gleichen Server zu unterhalten, Hiervon macht z.b. die z/os Version von WebSphere Gebrauch. Die drei Prozesse Server, Registry und Policy müssen auf ihren jeweiligen Rechnern gestartet werden, ehe die Klientenanwendung durchgeführt werden kann. In unserem Beispiel starten wir die drei Prozesse auf dem gleichen Rechner auf dem unser Klient läuft. Dies geschieht mit Hilfe des Start Kommandos: start policytool start rmiregistry start java QuadratServer Nachdem die Prozesse gestartet sind können wir unseren Klienten aktivieren mit dem Kommando Es geht los. java QuadratClient ( parameter )

31 Inbetriebnahme Schritt 1: auf der Command Line eingeben start policytool Es werden zwei neue Fenster geöffnet: C:\j2sdk1.4.0_02\bin\policytool.exe und Richtlinietool. Diese repräsentieren den Security Prozess.

32

33 Inbetriebnahme Schritt 2: Ausserdem erscheint in der untersten Leiste rechts ein Eintrag Richtlinientool. Auf diesen Eintrag mit der linken Maustaste einmal klicken. Jetzt im Verzeichnis C:\example\jrmp auf der Command Line eingeben start rmiregistry Das C:\j2sdk1.4.0_02\bin\rmiregistry.exe Fenster erscheint. Der Registry Prozess wurde gestartet

34 Inbetriebnahme Schritt 3: Jetzt im Verzeichnis C:\example\jrmp auf der Command Line eingeben start java QuadratServer Damit wird der Server gestartet. Das H:\j2sdk1.4.0_02\bin\java.exe Fenster erscheint.

35 Inbetriebnahme Schritt 4: Jetzt im Verzeichnis C:\example\jrmp auf der Command Line eingeben java QuadratClient localhost 5 Bezeichnung des Server Objektes Internet Adresse des Server Objektes Eine attraktiven Präsentationslogik gefällig? Die Ziffer 5 ist das Argument, was von der Server Anwendung quadriert werden soll. Die folgende Message erscheint C:\example\jrmp>java QuadratClient localhost 5 OK 25 Und dies ist das Ergebnis der Anfrage des Clienten : java QuadratClient localhost 5 Das Ergebnis ist 25

36 Ergebnis der Anfrage des Clienten : Glückwunsch. Sie haben erfolgreich ein RMI Programm erstellt.

37 Dies sind die 4 übrigen geöffneten Fenster

Remote Method Invocation

Remote Method Invocation Remote Method Invocation spezielle Technik aus dem Java-Umfeld Ausführung der Methoden auf einem entfernten Rechner Analogon zum RPC (Remote Procedure Call) Zweck: Objekte in verschiedenen Java-VM s Aufruf

Mehr

Remote Method Invocation

Remote Method Invocation Remote Method Invocation Spezielle Technik aus dem Java-Umfeld Ausführung von Methoden auf einem entfernten Rechner Analogon zum RPC (Remote Procedure Call) Zweck: Objekte in verschiedenen Java-VMs Aufruf

Mehr

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007 Systemprogrammierung Projekt: Java RMI Wintersemester 2006 / 2007 Systemprogrammierung 1. Einleitung 2. Einführung in RPC 3. RMI 4. Code Beispiele 5. Live Vorstellung 6. Ausblick 7. Fazit 2 1. Einleitung

Mehr

Java-Programmierung. Remote Method Invocation - RMI

Java-Programmierung. Remote Method Invocation - RMI Java-Programmierung Remote Method Invocation - RMI Entwicklungsmethoden Sockets Entwurf verteilter Anwendungen ist relativ aufwändig, da zunächst ein Kommunikationsprotokoll entwickelt werden muss aufwändig

Mehr

7.1.5 Java RMI Remote Method Invocation (http://java.sun.com/products/jdk/rmi) (http://java.sun.com/j2se/1.3/docs/guide/rmi/spec/rmitoc.

7.1.5 Java RMI Remote Method Invocation (http://java.sun.com/products/jdk/rmi) (http://java.sun.com/j2se/1.3/docs/guide/rmi/spec/rmitoc. 7.1.5 Java RMI Remote Method Invocation (http://java.sun.com/products/jdk/rmi) (http://java.sun.com/j2se/1.3/docs/guide/rmi/spec/rmitoc.html) bietet leider nur begrenzte Verteilungsabstraktion Unterstützung

Mehr

Programmieren II. Remote Method Invocation (RMI) Heusch -- Ratz. Institut für Angewandte Informatik

Programmieren II. Remote Method Invocation (RMI) Heusch -- Ratz.  Institut für Angewandte Informatik Programmieren II Remote Method Invocation (RMI) Heusch -- Ratz KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Remote Method

Mehr

Java RMI Remote Method Invocation

Java RMI Remote Method Invocation Java RMI Remote Method Invocation Ziel: Aufruf von Instanzmethoden entfernter Objekte basierend auf Java. Paket: java.rmi und Unterpakete Topologie: RMI Registry RMI Server RMI Client Der Server registriert

Mehr

Konzepte von Betriebssystem-Komponenten Middleware RMI

Konzepte von Betriebssystem-Komponenten Middleware RMI Konzepte von Betriebssystem-Komponenten Middleware RMI Mario Kiefer 21. Januar 2005 1 Einführung RMI (Remote Method Invocation) ermöglicht es mit relativ einfachen Mitteln verteilte Anwendungen zu erstellen.

Mehr

Kurzanleitung RMI-Beispiel: gettime Seite 1 / 7. RMI Projekt gettime 1

Kurzanleitung RMI-Beispiel: gettime Seite 1 / 7. RMI Projekt gettime 1 Kurzanleitung RMI-Beispiel: gettime Seite 1 / 7 Inhaltsverzeichnis RMI Projekt gettime 1 Schritt 1: Interface Klasse definieren 1 Schritt 2: Implementation Class definieren 2 Schritt 3: RMI Compiler erstellen

Mehr

Java Remote Method Invocation (RMI)

Java Remote Method Invocation (RMI) Java Remote Method Invocation (RMI) Alexander Petry 13. Mai 2003 engl.: Entfernter Methodenaufruf 1 Übersicht 1. Einleitung 2. RMI Interfaces und Klassen 3. Parameterübergabe 4. Dynamisches Nachladen von

Mehr

Remote Method Invocation

Remote Method Invocation Remote Method Invocation Aufruf von Methoden über die Grenzen der VM hinweg. Javaprozesse der rufenden und gerufenen Methode können auf verschiedenen Hosts laufen. Eine RMI-Applikation besteht aus dem

Mehr

7 Remote Method Invocation (RMI)

7 Remote Method Invocation (RMI) 7 Remote Method Invocation (RMI) Verteilte Java Anwendungen; Client/Server Architektur Vorläufige Version 188 c 2005 Peter Thiemann Server: Aufgaben erstellt remote objects Objekte, deren Methoden von

Mehr

8.1.5 Java RMI Remote Method Invocation

8.1.5 Java RMI Remote Method Invocation 8.1.5 Java RMI Remote Method Invocation (http://java.sun.com/products/jdk/rmi ) (http://java.sun.com/j2se/1.5/docs/guide/rmi ) (http://java.sun.com/docs/books/tutorial/rmi ) (http://java.sun.com/developer/onlinetraining/rmi/rmi.html

Mehr

9. Remote Method Invocation Grundlagen der Programmierung II (Java)

9. Remote Method Invocation Grundlagen der Programmierung II (Java) 9. Remote Method Invocation Grundlagen der Programmierung II (Java) Prof. Dr. Bernhard Humm Hochschule Darmstadt University of Applied Sciences Sommersemester 2006 Übersicht Grundlagen der Programmierung

Mehr

B Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion

B Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion 1 Java 1.1 e B Java RMI orientierte Sprache e beschrieben in Klassendefinitionen und andere Datentypen: int, float, boolean, etc. referenzen Verweise auf e keine Zeiger, Adressen o.ä. B.1 B.2 1.1 e (2)

Mehr

Remote Methode Invocation (RMI) ETIS SS05

Remote Methode Invocation (RMI) ETIS SS05 Remote Methode Invocation (RMI) ETIS SS05 Motivation Ablauf der Kommunikation Erstellung Remote-Service Zusammenfassung Gliederung 2 Motivation I RMI: Remote Method Invokation Möglichkeit verteilte Java-Anwendungen

Mehr

Client/Server-Programmierung

Client/Server-Programmierung Client/Server-Programmierung WS 2014/2015 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 15. Oktober 2015 Betriebssysteme / verteilte

Mehr

Client/Server-Programmierung

Client/Server-Programmierung Client/Server-Programmierung WS 2014/2015 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 15. Oktober 2015 Betriebssysteme / verteilte

Mehr

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014) Anleitung Ein einfaches RMI-Beispiel (ab Java.0) c Y. Pfeifer (Juni 014) 1 Ein einfaches RMI-Beispiel Vorgehensweise: 1. Java Projekt anlegen. Zwei Packages server & client erstellen Auf der Server-Seite

Mehr

RMI Server und Client

RMI Server und Client RMI Server und Client RMI Server Remote Objekt(e) bereitstellen Wurzel Objekt in Verzeichnisdienst anmelden RMI Client Wurzel Objekt in entfernter JVM mittels Verzeichnisdienst finden Methoden von Remote

Mehr

Mobile und Verteilte Datenbanken

Mobile und Verteilte Datenbanken Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2013/2014 groppe@ifis.uni-luebeck.de Institut für Informationssysteme Universität zu Lübeck Kommunikations-Middleware Bietet höhere Kommunikations-Dienste

Mehr

Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06

Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06 Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06 Aufgabe 1 Bitte schreiben Sie ein RMI Objekt, das eine Person repräsentiert. Es soll die folgende Schnittstelle implementieren: public interface Person

Mehr

Praktikum aus Softwareentwicklung 2, Stunde 8

Praktikum aus Softwareentwicklung 2, Stunde 8 Praktikum aus Softwareentwicklung 2, Stunde 8 Lehrziele/Inhalt 1. Remoting Remoting Über Remoting können Objekte über JavaVMs hinweg miteinander kommunizieren. Das ist auch mit Socket-Programmierung möglich.

Mehr

Grundlagen verteilter Systeme

Grundlagen verteilter Systeme Universität Augsburg Institut für Informatik Prof. Dr. Bernhard Bauer Stephan Roser Viviane Schöbel Aufgabe 1: Wintersemester 07/08 Übungsblatt 2 20.11.07 Grundlagen verteilter Systeme Lösungsvorschlag

Mehr

Übung zur Vorlesung "Einführung in Verteilte Systeme"

Übung zur Vorlesung Einführung in Verteilte Systeme Übung zur Vorlesung "Einführung in Verteilte Systeme" Wintersemester 2004/05 Thema: Java RMI Ulf Rerrer Institut für Informatik Universität Paderborn Inhalt Java Remote Method Invocation RMI-Architektur!

Mehr

-Testen verteilter Anwendungen

-Testen verteilter Anwendungen -Testen verteilter Anwendungen Seminar Simulation und Bildanalyse mit Java im SS04 Konstantin Tjo, Urs Pricking Testen verteilter Anwendungen 1 Übersicht Einführung in verteilte Anwendungen RMI (Remote

Mehr

Mobile und Verteilte Datenbanken

Mobile und Verteilte Datenbanken Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2010/2011 groppe@ifis.uni-luebeck.de Institut für Informationssysteme Universität zu Lübeck Java Remote Method Invocation (RMI) Realisierung

Mehr

Komponententechnologien Winter 2016/17. Komponenten. 2. Die Anfänge. Peter Sturm, Universität Trier 1

Komponententechnologien Winter 2016/17. Komponenten. 2. Die Anfänge. Peter Sturm, Universität Trier 1 Komponenten 1 2. Die Anfänge 3 Peter Sturm, Universität Trier 1 Selbstzufrieden Anwendung Hardware 4 Oh? Da gibt es noch jemanden? Anwendung Anwendung TCP/IP Hardware Hardware 5 Peter Sturm, Universität

Mehr

Internetanwendungstechnik (Übung)

Internetanwendungstechnik (Übung) Internetanwendungstechnik (Übung) JacORB S. Bissell, G. Mühl Technische Universität Berlin Fakultät IV Elektrotechnik und Informatik Kommunikations- und Betriebssysteme (KBS) Einsteinufer 17, Sekr. EN6,

Mehr

JAVA Remote Method Invocation JRMP Tutorial

JAVA Remote Method Invocation JRMP Tutorial JAVA Remote Method Invocation JRMP Tutorial Abteilung Technische Informatik, Institut für Informatik, Universität Leipzig Abteilung Technische Informatik, Wilhelm Schickard Institut für Informatik 11.6.2013

Mehr

4. Informatiktag NRW 14.3.05. Projekt online Shop. Barbara Leipholz Schumacher Euregio Kolleg, Würselen

4. Informatiktag NRW 14.3.05. Projekt online Shop. Barbara Leipholz Schumacher Euregio Kolleg, Würselen 1/51 Projekt online Shop 4. Informatiktag NRW 14.3.05 Barbara Leipholz Schumacher Euregio Kolleg, Würselen 2/51 Die Firma Sprachen Lernen möchte ihr Angebot auf online Bestellungen ausweiten. Sprache Art

Mehr

Themen. Web Service - Clients. Kommunikation zw. Web Services

Themen. Web Service - Clients. Kommunikation zw. Web Services Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur

Mehr

Verteilte Systeme. Verteilte Objektorientierte Systeme I. Prof. Dr. Oliver Haase

Verteilte Systeme. Verteilte Objektorientierte Systeme I. Prof. Dr. Oliver Haase Verteilte Systeme Verteilte Objektorientierte Systeme I Prof. Dr. Oliver Haase 1 Überblick Verteilte Objektorientierte Systeme 1 RPC verteilte objektorientierte Architekturen Java RMI Verteilte Objektorientierte

Mehr

Inhalt. Übung zur Vorlesung "Einführung in Verteilte Systeme" Das RMI-Schichtenmodell. Java Remote Method Invocation. Wintersemester 2004/05

Inhalt. Übung zur Vorlesung Einführung in Verteilte Systeme Das RMI-Schichtenmodell. Java Remote Method Invocation. Wintersemester 2004/05 Übung zur Vorlesung "Einführung in Verteilte Systeme" Wintersemester 2004/05 Ulf Rerrer Thema: Java RMI Institut für Informatik Universität Paderborn Inhalt Java Remote Method Invocation RMI-Architektur!

Mehr

Remote- und Server-Programmierung. Dr. Wolfgang Süß Thorsten Schlachter

Remote- und Server-Programmierung. Dr. Wolfgang Süß Thorsten Schlachter Remote- und Server-Programmierung Dr. Wolfgang Süß Thorsten Schlachter Remote Method Invocation (RMI) Servlets WebServices 2 Remote Method Invocation (RMI) Das Remote Method Invocation (RMI)-Framework

Mehr

Praktikum Verteilte Anwendungen

Praktikum Verteilte Anwendungen Technische Informatik (Info II) -Sommersemester 2006 - Folie 1 / 27 0 Gliederung 1.) Kurze Wiederholung/ Einleitung 2.) RPC/ RMI 3.) Praktisches Beispiel 4.) Aufgabenblatt Folie 2 / 27 Wiederholung/ Einleitung

Mehr

Programmieren II. Remote-Programmierung. www.kit.edu. Institut für Angewandte Informatik

Programmieren II. Remote-Programmierung. www.kit.edu. Institut für Angewandte Informatik Programmieren II Remote-Programmierung KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Remote-Programmierung Remote Method Invocation

Mehr

Netzprogrammierung: Java RMI - Remote Method Invocation (Teil 1)

Netzprogrammierung: Java RMI - Remote Method Invocation (Teil 1) Netzprogrammierung: Java RMI - Remote Method Invocation (Teil 1) Robert Tolksdorf und Peter Löhr Überblick 1. Fernaufrufbare Objekte 2. Das Objektverzeichnis rmiregistry 3. Parametersemantik Dokumentation

Mehr

Janeva:.NET meets J2EE

Janeva:.NET meets J2EE Inhalt: Motivation Was ist Janeva? Systemvoraussetzungen Installation Beispiel Converter Fazit Motivation Motivation: Janeva testen einen Überblick verschaffen Lauffähiges Beispiel Entscheidungshilfe über

Mehr

Client/Server-Systeme

Client/Server-Systeme Client/Server-Systeme Prof. Dr.-Ing. Wilhelm G. Spruth SS 2005 Teil 16 RMI, DCOM, Webservices cs 1100 ww6 sch 05-97 Remote Method Invocation (RMI) JVM JVM Client Server Stub Java Remote Skeleton Method

Mehr

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Remote Method Invocation (RMI) Hier soll ein Überblick 1 über die RMI-Technologie der Java 2 Plattform gegeben werden. Inhaltsverzeichnis 1.Überblick...3 2.RMI Architektur...6 2.1.Überblick...6 2.2.RMI

Mehr

Middleware. im Schweinsgalopp

Middleware. im Schweinsgalopp Middleware im Schweinsgalopp 1 Szenario Unternehmen verwendet SAP als ERP-System wickelt Versand über Dienstleister, hier UPS ab UPS bietet Verfolgung der Lieferung über Web- Schnittstelle Daten im ERP

Mehr

J Fernmethodenaufrufe Remote Method Invocation (RMI)

J Fernmethodenaufrufe Remote Method Invocation (RMI) J Fernmethodenaufrufe Remote Method Invocation (RMI) ermöglicht Abstraktion in einem verteilten System Socket-Kommunikation Fernaufrufe (RPC) J Fernmethodenaufrufe Remote Method Invocation (RMI) keine

Mehr

Laborübung zu Verteilte Systeme : Aufgabe zu Java-RMI (1)

Laborübung zu Verteilte Systeme : Aufgabe zu Java-RMI (1) Master EE verteilte Systeme Laborpraktikumsaufgabe Thomas/Seck V 2.0 22.01.2007 Seite1 von 6 Laborübung zu Verteilte Systeme : Aufgabe zu Java-RMI (1) Aufgabenstellung : Es ist ein über RMI aktivierbarer

Mehr

KAPITEL 1 RMI Verteilte Programmierung unter JAVA von Anja Austermann

KAPITEL 1 RMI Verteilte Programmierung unter JAVA von Anja Austermann RMI Verteilte Programmierung unter JAVA von Anja Austermann Da die Sprache Java sehr stark an der Programmierung für das Internet orientiert ist, stellt sie mit RMI einen Mechanismus zur Verfügung, mit

Mehr

Überblick. Middleware - Übung. Model-View-Controller. Entwurfsmuster (Design Patterns)

Überblick. Middleware - Übung. Model-View-Controller. Entwurfsmuster (Design Patterns) Überblick Middleware - Übung Tobias Distler, Michael Gernoth, Rüdiger Kapitza Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme und Betriebssysteme) www4.informatik.uni-erlangen.de

Mehr

UNIVERSITÄT LEIPZIG. Mainframe Internet Integration SS2013. Java Remote Method Invocation Teil 2 RMI

UNIVERSITÄT LEIPZIG. Mainframe Internet Integration SS2013. Java Remote Method Invocation Teil 2 RMI UNIVERSITÄT LEIPZIG Mainframe Internet Integration Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013 Java Remote Method Invocation Teil 2 RMI el0100 copyright Abt. Technische Informatik,

Mehr

Netzprogrammierung: Java RMI - Remote Method Invocation (Teil 2)

Netzprogrammierung: Java RMI - Remote Method Invocation (Teil 2) Netzprogrammierung: Java RMI - Remote Method Invocation (Teil 2) Robert Tolksdorf und Peter Löhr Überblick 1. Auffinden von.class-dateien 2. Serializable Parameter 3. Sicherheit 4. Code laden übers Web

Mehr

Mainframe Internet Integration. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013. WebSphere Application Server Teil 4

Mainframe Internet Integration. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013. WebSphere Application Server Teil 4 UNIVERSITÄT LEIPZIG Mainframe Internet Integration Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013 WebSphere Application Server Teil 4 Leistungsverhalten el0100 copyright W. G. Spruth,

Mehr

JAVA Remote Method Invocation RMI/IIOP Tutorial

JAVA Remote Method Invocation RMI/IIOP Tutorial 7 xxx JAVA Remote Method Invocation RMI/IIOP Tutorial Abteilung Technische Informatik, Institut für Informatik, Universität Leipzig Abteilung Technische Informatik, Wilhelm Schickard Institut für Informatik,

Mehr

10.1 Remote Method Invocation (RMI)

10.1 Remote Method Invocation (RMI) 10.1 Remote Method Invocation (RMI) Verteilte Java Anwendungen Methodenaufrufe auf Fremdobjekten (remote objects) Object Serialization Typen bleiben erhalten Package java.rmi (und andere) Vorläufige Version

Mehr

1. Sie können die zentrale Idee und Bedeutung einer Schnittstelle, wie sie schon im RPC verwendet wird, erklären.

1. Sie können die zentrale Idee und Bedeutung einer Schnittstelle, wie sie schon im RPC verwendet wird, erklären. CORBA Lernziele 1. Sie können die zentrale Idee und Bedeutung einer Schnittstelle, wie sie schon im RPC verwendet wird, erklären. Zentrale Idee: Schnittstelle: - mit einer Schnittstelle beschreibt man

Mehr

Kapitel 6: Verteilte Objekte durch RMI. Middleware in Java vieweg 2005 Steffen Heinzl, Markus Mathes

Kapitel 6: Verteilte Objekte durch RMI. Middleware in Java vieweg 2005 Steffen Heinzl, Markus Mathes Kapitel 6: Verteilte Objekte durch RMI Prinzip von RMI RMI (Remote Method Invocation) erlaubt den Aufruf von Methoden von Objekten, die sich auf einem anderen einem entfernten Rechnersystem befinden. Man

Mehr

Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 3. Februar 2006

Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 3. Februar 2006 Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 3. Februar 2006 Aufkleber Name: Vorname: Matrikel: Studiengang: inkl. DPO4, B/M, Schwerp., Schreiben Sie zunächst Ihren

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener

Mehr

RMI. Wir haben. Komponenten auf einem Rechner. Remote Method Invocation

RMI. Wir haben. Komponenten auf einem Rechner. Remote Method Invocation RMI Remote Method Invocation Wir haben Komponenten auf einem Rechner Komp1 Komp2 zwei Rechner Wir wollen Komp1 Komp2 TCP/IP aber wie? Fallstudie Chat Einfluss der Architektur auf den Entwurf oder Man kann

Mehr

Überblick. Class-Objekte. Bietet die Möglichkeit das Laufzeitverhalten von Applikationen zu analysieren und es gegebenenfalls sogar zu beeinflussen

Überblick. Class-Objekte. Bietet die Möglichkeit das Laufzeitverhalten von Applikationen zu analysieren und es gegebenenfalls sogar zu beeinflussen Überblick Bietet die Möglichkeit das Laufzeitverhalten von Applikationen zu analysieren und es gegebenenfalls sogar zu beeinflussen Stubs & Skeletons Aufgabe 2 Tutorial: http://download.oracle.com/javase/tutorial/reflect/index.html

Mehr

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen 7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen

Mehr

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax Weitere Beispiele Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts public interface Funktion { boolean istimdefbereich(double x); double wert(double x); String gibbeschreibung(); public interface

Mehr

CORBA-Konzept. Ziele. Common Object Request Broker Architecture CORBA. Plattformunabhängige Kommunikation Transparente Verteilung von Objekten

CORBA-Konzept. Ziele. Common Object Request Broker Architecture CORBA. Plattformunabhängige Kommunikation Transparente Verteilung von Objekten CORBA-Konzept Ziele Common Object Request Broker Architecture CORBA Plattformunabhängige Kommunikation Transparente Verteilung von Objekten CORBA-Konzept Object Management Group Spezifiziert den CORBA-Standard

Mehr

Java in Verteilte Systeme - RMI

Java in Verteilte Systeme - RMI In diesem Kursteil Modul 2 : Remote Method Invocation RMI Modul Einleitung Was ist Java RMI? RMI Architektur Übersicht Der Transport Layer Garbage Collection Remote Reference Layer RMI Stubs und Skeletons

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 13: Interfaces Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Interfaces Motivation Eigenschaften Besonderheiten Anonyme Klassen Lambda-Ausdrücke Praxis:

Mehr

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Anonyme Klassen

Mehr

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen

Mehr

C Java RMI. 1 Java. Objektorientierte Sprache

C Java RMI. 1 Java. Objektorientierte Sprache Java RMI 1 1 Java Objektorientierte Sprache Objekte und andere Datentypen: int, float, boolean, etc. Objektreferenzen Verweise auf Objekte keine Zeiger, Adressen o.ä. Methodenaufruf bei vorhandener Objektreferenz

Mehr

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Exkurs: ANONYME KLASSEN Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Anonyme Klassen Eigenschaften 1 Häufigste Anwendung lokaler Klassen: anonyme Definition. Klasse erhält keinen eigenen

Mehr

Implementierung III. Implementierung IV

Implementierung III. Implementierung IV Übersicht Implementierung III GUI und Verhalten (Teil 2) Implementierung IV Schnittstelle zur Umgebung Integration und Test Alexander Geraldy Softwarepraktikum - Teil: Eingebettete Systeme SoSe 20031 Implementierung

Mehr

1 Abstrakte Klassen, finale Klassen und Interfaces

1 Abstrakte Klassen, finale Klassen und Interfaces 1 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

7 Praktische Aspekte (Wie mache ich...)

7 Praktische Aspekte (Wie mache ich...) 7 Praktische Aspekte (Wie mache ich...) Im Praktikum verwendet: JacORB: Java-basierte ORB-implementierung GroupPac: FT-CORBA-Erweiterung zu JacORB JGroups: Java-Gruppenkommunikationsschicht APXGroup: Gruppenkommunikationsschicht

Mehr

Client/Server-Programmierung

Client/Server-Programmierung Client/Server-Programmierung WS 2013/2014 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 8. November 2013 Betriebssysteme / verteilte

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Oracle & Java HOW TO

Oracle & Java HOW TO Oracle & Java HOW TO Helge Janicke, Niels-Peter de Witt, Karsten Wolke 21. Januar 2002 Inhaltsverzeichnis 1 Java-Anbindung an Oracle-DB 2 2 Benötigte Programme und Daten 2 3 Einbinden der Klassen 2 4 Aufbau

Mehr

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank... Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: hat Farbe Hubraum Tank kann man Gas geben Bremsen Hoch

Mehr

H.2 Distributed Events

H.2 Distributed Events H Überblick über die 7. Übung H Überblick über die 7. Übung 1 RemoteEvent Remote Events ServiceEvents Basisklasse aller Jini Events package net.jini.core.event; import java.rmi.marshalledobject; Security-Policies

Mehr

36.2 Example ClassLoader. 36.3 Example Appletviewer

36.2 Example ClassLoader. 36.3 Example Appletviewer 36 ClassLoader How are classes loaded into the Java Virtual Machine (JVM)? from the local file system (CLASSPATH). by an instance of ClassLoader... and when? - When they are needed the first time. class

Mehr

Implementierung IV: Schnittstelle zur Umgebung. und. Integration und Test

Implementierung IV: Schnittstelle zur Umgebung. und. Integration und Test Sommersemester 2003 Implementierung IV: Schnittstelle zur Umgebung und Integration und Test 34 Aufgabe 6 Implementierung IV: Schnittstelle zur Umgebung und Integration und Test Umfang: 2 Wochen Punkte:

Mehr

Java in Verteilte Systeme

Java in Verteilte Systeme In diesem Kursteil Modul 2 : Remote Method Invocation RMI Modul Einleitung Was ist Java RMI? RMI Architektur Übersicht Der Transport Layer Garbage Collection Remote Reference Layer RMI Stubs und Skeletons

Mehr

Szenario 3: Service mit erweiterter Schnittstelle

Szenario 3: Service mit erweiterter Schnittstelle 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 3: Service mit erweiterter Schnittstelle Ein Service bietet zusätzliche Methoden an, über die sich

Mehr

Einführung in die Programmierung 1

Einführung in die Programmierung 1 Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener

Mehr

E.1 Object Request Brokers

E.1 Object Request Brokers E Überblick über die 4. Übung E Überblick über die 4. Übung 1 Komponenten eines ORBs Lösungsskizze Aufgabe 2 RPC und ORB Aufrufsemantiken Hinweise Aufgabe 3 Kommunikationsschicht: tauscht Daten zwischen

Mehr

Kommunikation. Björn und Georg

Kommunikation. Björn und Georg Kommunikation Björn und Georg CORBA CORBA (Common Object Request Broker Architecture) Entwicklung der OMG ( Object Management Group) Zusammenschluss von 800 Firmen Hardware- und Progammiersprachen-unabhängiges

Mehr

Warum EJB Technologie (1)?

Warum EJB Technologie (1)? Datenbanken und Informationssysteme 2 SS 2004 Prof. Dr. Stefan Böttcher Universität Paderborn Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 Folie EJB - 1 Warum EJB Technologie

Mehr

Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 30. März 2006

Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 30. März 2006 Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 30. März 2006 Aufkleber Name: Vorname: Matrikel: Studiengang: inkl. DPO4, B/M, Schwerp., Schreiben Sie zunächst Ihren Namen

Mehr

Übungen zu Verteilte Systeme : Aufgabe zu Java-RMI (1)

Übungen zu Verteilte Systeme : Aufgabe zu Java-RMI (1) BEREICH DATENTECHNIK U VS 031 01 TH 02 Übungen zu Verteilte Systeme : Aufgabe zu Java-RMI (1) Aufgabenstellung : Es ist ein über RMI aktivierbarer generischer Problemlösungs-Server in Java zu entwickeln.

Mehr

Grundlagen verteilter Systeme

Grundlagen verteilter Systeme Universität Augsburg Insitut für Informatik Prof. Dr. Bernhard Bauer Wolf Fischer Christian Saad Wintersemester 08/09 Übungsblatt 2 05.11.08 Grundlagen verteilter Systeme Lösungsvorschlag Aufgabe 1: Das

Mehr

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode wird public

Mehr

Ausnahmebehandlung. Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren. Ausnahmen abfangen. Ausnahmen definieren

Ausnahmebehandlung. Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren. Ausnahmen abfangen. Ausnahmen definieren Ausnahmebehandlung Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren Ausnahmen abfangen Ausnahmen definieren Sinnvolle Verwendung von Ausnahmen Informatik II: Objektorientierte SW-Entwicklung, Algorithmik,

Mehr

Client/Server-Systeme

Client/Server-Systeme Client/Server-Systeme Prof. Dr.-Ing. Wilhelm G. Spruth SS 2004 Teil 15 Intersystem-Kommunikation RMI, DCOM, Webservices, SNA cs 1100 ww6 sch 05-97 Remote Method Invocation (RMI) Aufruf von Java Programmen

Mehr

Variablen manipulieren per JDI

Variablen manipulieren per JDI Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt

Mehr

Enterprise JavaBeans Überblick

Enterprise JavaBeans Überblick Enterprise JavaBeans Überblick 1. Überblick Java EE 5 und Komponententechnologien 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5. Java Persistence: Entity Manager 6.

Mehr

Handbuch für die Erweiterbarkeit

Handbuch für die Erweiterbarkeit Handbuch für die Erweiterbarkeit Inhalt Pakete für die Erweiterbarkeit... 2 Actions... 2 Items... 2 Itemset... 2 Die UseCaseNewAction... 3 Eigene Shapes... 4 Der Shape Container... 5 User Objects... 6

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

Java Remote Methode Invocation - RMI Praxis

Java Remote Methode Invocation - RMI Praxis In diesem Kapitel: Einleitung Distributed Computing mittels RMI Parameter in RMI Client-seitige Callbacks Automatische Distribution Distribured Garbage Collection Berechnungsserver Eigene SocketFactory

Mehr

Remote Method Invocation

Remote Method Invocation Remote Method Invocation Remote Method Invocation (RMI) ist Teil der JDK 1.1. - Es wurde entwickelt, um Remote Method Invocation nahtlos über verschieden Java Virtual Machines hinweg zu unterstützen. Damit

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Verteiltes Rechnen. Verteilte Dienste mit Java Remote Method Invocation (RMI). Prof. Dr. Nikolaus Wulff

Verteiltes Rechnen. Verteilte Dienste mit Java Remote Method Invocation (RMI). Prof. Dr. Nikolaus Wulff Verteiltes Rechnen Verteilte Dienste mit Java Remote Method Invocation (RMI). Prof. Dr. Nikolaus Wulff Verteiltes Rechnen Anwendungen im WWW sind meist als Client-Server Architekturen realisiert. Ein Client

Mehr

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode Methoden und Klassen Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode

Mehr

Einführung in die Programmiersprache Java II

Einführung in die Programmiersprache Java II Einführung in die Programmiersprache Java II ??????????? UML OOP "Object oriented programming is bad" - professional retard 90s... UML Entwicklungsziele verschiedenen existierenden objektorienten Modellierungsmethoden

Mehr

Eclipse Tutorial.doc

Eclipse Tutorial.doc Berner Fachhochschule Hochschule für Technik und Informatik, HTI Fachbereich Elektro- und Kommunikationstechnik Labor für Technische Informatik Eclipse Tutorial 2005, HTI Burgdorf R. Weber Dateiname: Eclipse

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse

Mehr