Netzprogrammierung: Java RMI - Remote Method Invocation (Teil 1)
|
|
|
- Gerrit Brodbeck
- vor 8 Jahren
- Abrufe
Transkript
1 Netzprogrammierung: Java RMI - Remote Method Invocation (Teil 1) Robert Tolksdorf und Peter Löhr
2 Überblick 1. Fernaufrufbare Objekte 2. Das Objektverzeichnis rmiregistry 3. Parametersemantik Dokumentation RMI: Robert Tolksdorf und Peter Löhr 2
3 Fernaufrufbare Objekte Robert Tolksdorf und Peter Löhr
4 Ein hypothetischer Ansatz Einfaches Beispiel - Modul im Gewand einer Klasse : public class Counter { static int c = 0; public static int inc(int i) { return c += i; public static int value() { return c; Testprogramm: public class Inc { public static void main(string[] arg) { int i = Counter.inc(Integer.parseInt(arg[0])); System.out.println("counter is " + i); Robert Tolksdorf und Peter Löhr 4
5 Ein hypothetischer Ansatz Szenario für hypothetisches (!) verteiltes Java mit hochgradiger Zugriffs- und Ortsabstraktion für Klassen: 1. Generator erzeugt für Counter einen Treiber, der mit Counter und einem Adapter CounterMain ein lauffähiges Programm ergibt; dieses wird auf Rechner X gestartet, wählt einen Port p und macht diesen bekannt. 2. Generator erzeugt - mit X und p als Parametern - für Counter eine gleichnamige Vertreter-Klasse Counter, die mit Inc ein lauffähiges Programm ergibt. 3. Beim Ablauf von Inc wird Counter.inc als Fernaufruf ausgeführt. Robert Tolksdorf und Peter Löhr 5
6 Ein hypothetischer Ansatz 4. Counter ist öffentlich, die Lebensdauer ist unabhängig von den Lebensdauern der Aufrufer. --> Achtung Nichtsequentialität: Wenn mehrere Aufrufer tätig sind, sind überlappende Ausführungen von inc möglich (jedenfalls sollte das Fernaufrufsystem dies unterstützen - mit Threading). Daher muss beim Aufgerufenen eine geeignete Ausschlußsynchronisation vorgenommen werden (die hier der Einfachheit halber weggelassen wurde). Robert Tolksdorf und Peter Löhr 6
7 Ein hypothetischer Ansatz Hinzunahme von Objekten: public class Counter { static int c = 0; public static int inc(int i) { return c += i; public static int value() { return c; int cc = 0; public int add(int i) { return cc += i; public class Inc { public static void main(string[] arg) { Counter counter = new Counter(); int i = counter.add(integer.parseint(arg[0])); System.out.println("counter is " + i); Robert Tolksdorf und Peter Löhr 7
8 Ein hypothetischer Ansatz new Counter(): Vertreter-Klasse hat einen Konstruktor, der über eine geeignete Nachricht den Treiber zur Erzeugung des eigentlichen Counter-Objekts veranlasst. Als Ergebnis dieser Aktion wird ein Fernverweis auf das Objekt zurückgeschickt und als new Counter() abgeliefert. Robert Tolksdorf und Peter Löhr 8
9 Ein hypothetischer Ansatz Hinzunahme von Schnittstellen: interface Counter { int add(int i); int value(); public class CounterA implements Counter { int cc = 0; public int add(int i) { return cc += i; public int value() { return cc; public class CounterB implements Counter { int cc = 0; public int add(int i) { cc += i; return cc; public int value() { return cc; Robert Tolksdorf und Peter Löhr 9
10 Ein hypothetischer Ansatz public class Inc { public static void main(string[] arg) { Counter[] counters = new Counter[10];... //initialize array... //with local and/or remote references for(counter c : counters) { c.add(...);... Probleme: 1. statische Bindung einer Klasse an einen Rechner 2. lokale und entfernte Objekte können nicht von ein und derselben Klasse sein Robert Tolksdorf und Peter Löhr 10
11 Elemente der RMI Die Lösung der RMI-Autoren bei Sun Microsystems: 1. Keine Fernaufrufe von statischen Methoden, d.h. nicht Klassen, sondern nur Objekte sind fernaufrufbar. 2. Keine Fernerzeugung von Objekten mit new. 3. Original-Klasse und Vertreter-Klasse haben verschiedene Namen, aber implementieren die gleiche Schnittstelle. 4. Diese Schnittstelle muss von java.rmi.remote erben und Ausnahmen vom Typ java.rmi.remoteexception extends java.io.ioexception vereinbaren (für verteilungsbedingte Fehler). Robert Tolksdorf und Peter Löhr 11
12 Elemente der RMI import java.rmi.*; interface Counter extends Remote { int inc(int i) throws RemoteException; int value() throws RemoteException; public class CounterImpl implements Counter { int c = 0; public int inc(int i) { return c += i; // throws entbehrlich public int value() { return c; // throws entbehrlich Achtung - nichtsequentielle Benutzung solcher Objekte (hier wiederum ignoriert) Robert Tolksdorf und Peter Löhr 12
13 Bemerkungen Remote ist ein marker interface, das vom Fernaufrufsystem gefordert wird, ebenso wie die throws- Klauseln. Ausnahmen vom Typ RemoteException werden durch verteilungsbedingte Fehler verursacht. Ein Objekt der Klasse CounterImpl ist sowohl fernaufrufbar als auch lokal aufrufbar, d.h. am Ort seiner Erzeugung. Um einen Fernaufruf durchführen zu können, muss sich der Aufrufer einen Fernverweis auf das Objekt beschaffen. Das kann er aber nur durch einen Fernaufruf... --> Henne-und-Ei-Problem? (siehe unten, rmiregistry ) Robert Tolksdorf und Peter Löhr 13
14 Stub-Erzeugung Historisch: Vertreter-Generator rmic (RMI compiler) erzeugt zu einer vorgegebenen Klasse (!) einen Vertreter, genannt stub, und einen Treiber, genannt skeleton. $ rmic CounterImpl erzeugt im aktuellen Verzeichnis die Dateien CounterImpl_Stub.class und CounterImpl_Skel.class Aktuell: Vertreter und Treiber werden zur Laufzeit erzeugt, wenn der Erzeuger eines Objekts dieses dem Fernaufrufsystem als fernaufrufbar bekannt macht. Robert Tolksdorf und Peter Löhr 14
15 Benutzung eines entfernt vorhandenen Objekts: public class Inc { public static void main(string[] arg) { Counter x =... // Fernverweis beschaffen int i = x.inc(integer.parseint(arg[0])); System.out.println("counter is " + i); Die Lebensdauer des Objekts ist hier unabhängig von den Lebensdauern der aufrufenden Prozesse! (Nichtsequentialität!) Wie entsteht das Objekt und wie erhält man den Fernverweis? Robert Tolksdorf und Peter Löhr 15
16 Das Objektverzeichnis rmiregistry Robert Tolksdorf und Peter Löhr
17 rmiregistry Das rmiregistry (dt. Register) ist ein Netzdienst, der ein Objektverzeichnis verwaltet. Typischer Start mit rmiregistry <port> & (und zu gegebener Zeit kill!) Dieses Verzeichnis bildet mnemonische Objektnamen auf Fernverweise ab. Zu den angebotenen Operationen gehören: bind: fügt einen neuen Eintrag hinzu lookup: liefert zu einem Namen den zugehörigen Fernverweis Ein rmiregistry wird mit host und port identifiziert und ist über geeignete Bibliotheksklassen benutzbar. Ein rmiregistry verwaltet ausschließlich lokale Objekte. Robert Tolksdorf und Peter Löhr 17
18 rmiregistry mein.rechner.de dein.rechner.de bind JVM1 rmiregistry JVM2 mein.rechner.de dein.rechner.de JVM1 lookup rmiregistry JVM2 mein.rechner.de dein.rechner.de JVM1 doit rmiregistry JVM2 Robert Tolksdorf und Peter Löhr 18
19 rmiregistry import java.rmi.server.unicastremoteobject; Statische Methode exportobject(x,port) macht das Objekt x der RMI-Verwaltung als fernaufrufbar bekannt, erzeugt einen unsichtbaren Treiber und einen Vertreter und liefert einen Verweis auf den Vertreter. Der zu verwendende Port kann angegeben werden; bei Angabe von 0 wird irgendein Port gewählt. import java.rmi.registry.locateregistry; Statische Methode getregistry(host,port) liefert Fernverweis auf ein (lokales oder entferntes) rmiregistry angesprochen werden kann. import java.rmi.registry.registry; Schnittstelle mit Methoden bind, lookup,... Robert Tolksdorf und Peter Löhr 19
20 rmiregistry import java.rmi.*; interface Registry extends Remote { void bind(string name, Remote object) throws AlreadyBoundException, RemoteException, AccessException; Remote lookup(string name) throws RemoteException NotBoundException, AccessException;... // weitere Operationen: rebind, unbind, list Robert Tolksdorf und Peter Löhr 20
21 Registrieren im rmiregistry import java.rmi.server.unicastremoteobject; import java.rmi.registry.locateregistry; import java.rmi.registry.registry; public class CounterImpl implements Counter { int c = 0; public int inc(int i) { return c += i; public int value() { return c; public static void main(string[] arg) throws Exception { Counter x = new CounterImpl(); Counter stub = (Counter) UnicastRemoteObject. exportobject(x, 0); Registry registry = LocateRegistry.getRegistry(); registry.bind("mycounter", stub); // main thread dies; hidden thread waits for invocation Robert Tolksdorf und Peter Löhr 21
22 Suchen im rmiregistry import java.rmi.registry.locateregistry; import java.rmi.registry.registry; public class Inc { public static void main(string[] arg) throws Exception { Registry registry = LocateRegistry.getRegistry(); Counter x = (Counter) registry.lookup("mycounter"); int i = x.inc(integer.parseint(arg[0])); System.out.println("counter is " + i); Typanpassung - kann scheitern! Robert Tolksdorf und Peter Löhr 22
23 Lokaler Test: $ javac Counter.java $ javac CounterImpl.java $ javac Inc.java $ java CounterImpl Exception in thread "main" java.rmi.connectexception: Connection refused to host: $ rmiregistry & [1] 8774 $ rmiregistry läuft nicht! Robert Tolksdorf und Peter Löhr 23
24 $ java CounterImpl & [2] 8777 $ java Inc 10 counter is 10 $ java Inc 10 counter is 20 $ java Inc -20 counter is 0 $ kill 8777 CounterImpl-Prozess löschen $ kill 8774 rmiregistry-prozess löschen Robert Tolksdorf und Peter Löhr 24
25 Test im Netz: rmiregistry & [1] 8774 java CounterImpl & [2] 8777 Klasse Inc (S. 21) ändern:...getregistry("troll.mi.fu-berlin.de ); java Inc 10 counter is 10 Robert Tolksdorf und Peter Löhr 25
26 Parametersemantik Robert Tolksdorf und Peter Löhr
27 Parameterübergabe Zur Erinnerung: Java kennt nur einen Parametermechanismus - Wertparameter (call by value)! Das ist gut für die Verteilung (vgl. 04-Fernaufrufe, S.27/28)!! Aber Achtung bei Parametern mit Verweistyp: Wenn die Klasse des aktuellen Parameters Remote implementiert: Übergabe eines Fernverweises. Wenn die Klasse des aktuellen Parameters nicht Remote, aber Serializable implementiert: Übergabe einer Objektkopie. Sonst: Laufzeitfehler MarshalException In Objekte eingebettete Verweise werden ebenso behandelt. Dies gilt für Argumente und Ergebnisse von Fernaufrufen. Robert Tolksdorf und Peter Löhr 27
28 Serializable Zur Erinnerung: die Schnittstelle java.io.serializable dient zur Markierung von Klassen, deren Objekte für die unformatierte (binäre) Ein/Ausgabe in E/A-Strömen vorbereitet sein sollen. Problem in Java: Felder sind Objekte - können aber nicht fernaufrufbar sein, weil sie über Indizierung statt über Methoden angesprochen werden. Felder sind aber Serializable. Für ein als Parameter eines Fernaufrufs übergebenes Serializable Objekt erhält der Empfänger keinen Fernverweis, sondern einen lokalen Verweis auf eine Kopie des Objekts. Merke: dies ist eine subtile Verletzung der Zugriffsabstraktion! Folgerung: alle nicht aufrufbaren Objekte, die als Parameter übergeben werden sollen, müssen Serializable sein. Beispiel: class Complex implements Serializable { re, im: Float; Auch String-Objekte sind Serializable. Das ist aber nicht problematisch, da sie ohnehin konstant sind. Robert Tolksdorf und Peter Löhr 28
29 Subtile Fehler Beispiel: Aufruf zweier Remote Objekte soll jeweils Feld liefern Fernaufruf Feld Feld Feld lokaler Aufruf Feld Robert Tolksdorf und Peter Löhr 29
30 Subtile Fehler import java.rmi.*; interface RemoteStack extends Remote { void push(int elem) throws RemoteException; void pop() throws RemoteException; int top() throws RemoteException; int[] dump() throws RemoteException; import java.rmi.server.unicastremoteobject; import java.rmi.registry.locateregistry; import java.rmi.registry.registry; public class RemoteStackImpl implements RemoteStack { int[] x = new int[10]; // exceptions ignored for brevity int sp = 0; public void push(int elem) { x[sp++] = elem; public void pop() { sp--; public int top() { return x[sp-1]; public int[] dump() { return x; Robert Tolksdorf und Peter Löhr 30
31 Subtile Fehler Erzeugung und Registrierung eines fernaufrufbaren Objekts: import java.rmi.server.unicastremoteobject; import java.rmi.registry.locateregistry; import java.rmi.registry.registry; public class CreateRemoteStack { public static void main(string[] arg) throws Exception { RemoteStack s = new RemoteStackImpl(); RemoteStack stub = (RemoteStack) UnicastRemoteObject. exportobject(s, 0); Registry registry = LocateRegistry.getRegistry(); registry.bind("remote", stub); Robert Tolksdorf und Peter Löhr 31
32 Subtile Fehler Weiteres Programm: Erzeugung eines fernaufrufbaren Objekts, lokaler Aufruf dieses Objekts und Fernaufruf des anderen: import java.rmi.registry.locateregistry; import java.rmi.registry.registry; import java.util.*; public class RMITest { public static void main(string[] arg) throws Exception{ Map<String,RemoteStack> stacks = new HashMap<String,RemoteStack>(); stacks.put("this", new RemoteStackImpl()); Registry registry = LocateRegistry.getRegistry(); RemoteStack x = (RemoteStack) registry.lookup("remote"); stacks.put("that", x); // jetzt 2 Objekte im Verzeichnis stacks Robert Tolksdorf und Peter Löhr 32
33 Subtile Fehler RemoteStack s1, s2; s1 = stacks.get("that"); s2 = stacks.get("this"); s1.push(3); s2.push(3); int[] there = s1.dump(); int[] here = s2.dump(); there[0] = 100; here[0] = 100; System.out.print("there: " + s1.top() + " "); System.out.print("here: " + s2.top() + "\n"); Test nach Start von rmiregistry und CreateRemoteStack: $ java RMITest there: 3 here: 100 $ Warum das?? --> Bild S. 29 Robert Tolksdorf und Peter Löhr 33
34 Zusammenfassung Robert Tolksdorf und Peter Löhr
35 Zusammenfassung Fernaufrufbare Objekte müssen eine Schnittstelle implementieren; diese Schnittstelle muss von java.rmi.remote erben; client stub implementiert diese Schnittstelle. Das Objektverzeichnis rmiregistry verzeichnet fernaufrufbare Objekte; diese werden vom jeweiligen Erzeuger eingetragen und stehen beliebigen Klienten zur Verfügung. Parametersemantik Für fernaufrufbare Parameter wird Netzverweis übergeben. Für serialisierbare Parameter wird Objektkopie übergeben, was die Verteilungsabstraktion schwächt! Robert Tolksdorf und Peter Löhr 35
36 Literatur Sun Microsystems: Java Remote Method Invocation Specification Sun Microsystems: Java Remote Method Invocation Tutorial Robert Tolksdorf und Peter Löhr 36
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
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
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
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
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
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
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
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
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
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
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)
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
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
7.1.1 Grundzüge der Fernaufruf-Implementierung
7.1.1 Grundzüge der Fernaufruf-Implementierung = Aufrufbeziehung Aufrufer Vertreter (proxy, client stub) Fernaufrufdienst A d a p t e r Treiber (skeleton, server stub) Fernaufrufdienst Aufgerufener (Modul,
Client/Server-Programmierung
Client/Server-Programmierung WS 2014/2015 Betriebssysteme / verteilte Systeme [email protected] Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 15. Oktober 2015 Betriebssysteme / verteilte
Client/Server-Programmierung
Client/Server-Programmierung WS 2014/2015 Betriebssysteme / verteilte Systeme [email protected] Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 15. Oktober 2015 Betriebssysteme / verteilte
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
8.1.6.NET Remoting. C# ( Csharp, Cis ) : Referenzsprache für.net,
8.1.6.NET Remoting.Net ( dotnet ) : von Microsoft eingeführte Plattform für verteilte Anwendungen, virtuelle Maschine für die verteilte Ausführung von Programmen in unterschiedlichen Sprachen C# ( Csharp,
Netzprogrammierung: Microsoft.NET Remoting
Netzprogrammierung: Microsoft.NET Remoting Robert Tolksdorf und Peter Löhr Überblick 1. Fernaufrufbare Objekte 2. Parameterübergabe 3. Konfigurationsdateien http://msdn.microsoft.com/en-us/library/72x4h507(vs.85).aspx
-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
Mobile und Verteilte Datenbanken
Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2010/2011 [email protected] Institut für Informationssysteme Universität zu Lübeck Java Remote Method Invocation (RMI) Realisierung
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
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.
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
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
Mobile und Verteilte Datenbanken
Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2013/2014 [email protected] Institut für Informationssysteme Universität zu Lübeck Kommunikations-Middleware Bietet höhere Kommunikations-Dienste
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
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
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
Ü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
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
8.2 Mobile Objekte. (mobile objects, auch Objektmigration, object migration) Facetten der Verteilungsabstraktion
8.2 Mobile Objekte (mobile objects, auch Objektmigration, object migration) 8.2.0 Facetten der Verteilungsabstraktion Verteilungsabstraktion (distribution transparency) ist Sammelbegriff für verschiedene
Der lokale und verteilte Fall
Lokale Beans Der lokale und verteilte Fall RemoteClient Lokaler Client (JSP) RemoteSession/Entity-Bean Lokale Session/Entity-Bean 2 Lokale Beans Die bisher vorgestellten EJBswaren immer in der Lage auf
Einführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
Netzprogrammierung Verteilte Objekte in Java RMI II
Netzprogrammierung Verteilte Objekte in Java RMI II Prof. Dr.-Ing. Robert Tolksdorf Freie Universität Berlin Institut für Informatik Netzbasierte Informationssysteme mailto: [email protected] http://www.robert-tolksdorf.de
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
Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff
Java Reflection Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Die Java Reflection API liefert per Introspection Informationen über Klassen => Meta-Daten.
Anwendung eines Enterprise Java Beans
Anwendung eines Enterprise Java Beans EJB Server EJB Container Remote Interface Home Interface EJB Object Der EJB Container kümmert sich um die Kommunikation des Beans mit anderen Komponenten, wobei er
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
1 Polymorphie (Vielgestaltigkeit)
1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen
Netzprogrammierung Verteilte Objekte in Java RMI II
Netzprogrammierung Verteilte Objekte in Java RMI II Prof. Dr.-Ing. Robert Tolksdorf Freie Universität Berlin Institut für Informatik Netzbasierte Informationssysteme mailto: [email protected] http://www.robert-tolksdorf.de
Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
Kapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
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
Kapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
Typ : void* aktuelle Parameter Pointer von beliebigem Typ
2. Funktionen - Prototypvereinbarung typangabe funktionsname(parameterliste); - Funktionsdefinition typ funktionsname(parameterliste){ Anweisung - Funktionstyp -> Typ der Funktionswertes zulaessige Typangaben
Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
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
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,
Dr. Monika Meiler. Inhalt
Inhalt 15 Parallele Programmierung... 15-2 15.1 Die Klasse java.lang.thread... 15-2 15.2 Beispiel 0-1-Printer als Thread... 15-3 15.3 Das Interface java.lang.runnable... 15-4 15.4 Beispiel 0-1-Printer
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
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
Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr
3. Übung Abgabe bis 10.11.2015, 10:00 Uhr Aufgabe 3.1: Java-Synchronisation a) An welchen Stellen im Code kann das Schlüsselwort synchronized verwendet werden? b) Wie nennt sich die Synchronisations-Art,
Dezentrale Kontrolle: Aktive Objekte. Aktive Objekte Die Klasse AnimatorThread Aktivierung Objekte beobachten Die Java-Klasse Thread
Dezentrale Kontrolle: Aktive Objekte Aktive Objekte Die Klasse AnimatorThread Aktivierung Objekte beobachten Die Java-Klasse Thread Passive Objekte Bieten Dienste auf Abruf an: - eine Zahl von der Konsole
Vorlesung Informatik II
Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 02. JAVA: Erstes Programm 1 Das erste Java-Programm
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
Programmieren 2 Java Überblick
Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 4 Innere Klassen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10
Übungen zu Softwaretechnik
Prof. Dr. Dr. h.c. M. Broy Lösungsblatt 11 Dr. H. Ehler, S. Wagner 23. Januar 2004 Übungen zu Softwaretechnik Aufgabe 16 Qualitätseigenschaften Broker-Pattern Beurteilen Sie das in Aufgabe 15 benutzte
Prinzipien Objektorientierter Programmierung
Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................
Kapitel 6. Vererbung
Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1
Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen
Repetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
Client/Server-Programmierung WS2007/08. EJB/JSP: Schritt-für-Schritt Anleitung
Client/Server-Programmierung WS2007/08 EJB/JSP: Schritt-für-Schritt Anleitung Version 1.1, 26.09.07 Eingesetzte Software: - Apache Tomcat 5.5.9 bzw. 5.5.12 (http://tomcat.apache.org/download-55.cgi#5.5.12)
6 Speicherorganisation
Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für
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
Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen
Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18
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
Java: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces
Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 20 Polymorphie/Späte Bindung Abstrakte Klassen Interfaces 2 / 20 Definition: Polymorphie Der Begriff Polymorphie (manchmal
Web-Services Implementierung mit Java
Web-Services Implementierung mit Java J. Heinzelreiter WS 2004/05 Java-APIs für Web-Services (1) Anwendungs-Code JAXR JAXM JAX-RPC SAAJ SOAP/SwA JWSDL WSDL XML/XML-Schema Web-Services/Java - 2 Java-APIs
Software Engineering Klassendiagramme Einführung
Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt
Objektserialisierung
Objektserialisierung SEP 170 Serialisierung von Objekten Umwandlung des Objektzustandes in einen Strom von Bytes, aus dem eine Kopie des Objekts zurückgelesen werden kann. Serialisierung in Java einfacher
5A Kooperation: Lösungen
5A Kooperation: Lösungen 5A.1 Wissens- und Verständnisfragen 1.a.) dass nicht auf jedem Computer alle Programme und Daten vorgehalten werden müssen / dass damit auch Geräte auf anderen Rechnerknoten angesprochen
Objektorientierung (OO)
Objektorientierung (OO) Objekte haben Zustände (oder Eigenschaften, Attribute) und Verhalten Zustände: Objektvariablen (in Java auch fields) Verhalten (oder Aktionen): Methoden (methods, Funktionen) members
11.1 Indirektes Binden (3) 11.1 Indirektes Binden (4) Objektadapterkonfiguration. Unmittelbarer Vorteil des indirekten Bindens
11.1 Indirektes Binden (3) Objektadapterkonfiguration Name wird bei Erzeugung vergeben wird genutzt u.a. für Property-Zugriffe Adapter-ID wird über Property konfiguriert Beispiel: MyAdapter.AdapterID=MyAdapter
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
Java Einführung Collections
Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...
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
Einstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden
Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java
Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11
2.2 Prozesse in Java
2.2 Prozesse in Java! Java sieht kein Schlüsselwort für Prozesse vor, sondern bestimmte Klassen und Schnittstellen. Mit anderen Worten: der Prozessbegriff wird mit Mitteln der Objektorientierung eingeführt.
Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.
Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden
