C.6 C.8. 1 Java (5) 1 Java (4) 1 Java (6) 2 Java RMI Grundlagen. Sicherheitsmechanismen. Hierarchische Benennung von Interfaces und Klassen

Größe: px
Ab Seite anzeigen:

Download "C.6 C.8. 1 Java (5) 1 Java (4) 1 Java (6) 2 Java RMI Grundlagen. Sicherheitsmechanismen. Hierarchische Benennung von Interfaces und Klassen"

Transkript

1 1 Java (4) Hierarchische Benennung von Interfaces und Klassen Paketname + Klassenname (Package) z.b. java.lang.object weltweite eindeutige Benennung durch Anlehnung des Paketnamens an Domainname z.b. org.aspectix.orb.orb (angelehnt an aspectix.org) Compilierung auf Klassenebene (Class File) übersetzt in interpretierten Byte-Code Dynamisches Laden von Klassen ClassLoader kann Klassen von beliebigen Quellen laden 1 Java (5) Sicherheitsmechanismen Byte-Code-Verifier Ausführung des Byte-Codes erhält Semantik der Sprache z.b. kein Zugriff auf nicht-öffentliche Instanzvariablen anderer Objekte möglich Sandboxing Klassen eines neuen ClassLoaders werden von einem SecurityManager kontrolliert versagt oder gewährt Zugriff auf Dateien Zugriff auf Netzwerkverbindungen etc. Threads als Sprachkonzept verfügbar als spezielle Objekte C.5 C.6 1 Java (6) JVM, Java Virtual Machine Interpreter für Java Class-Files (JIT-Compiler) Ausführungsumgebung für Java Programme bzw. Klassen mehrere ClassLoader möglich 2 Java RMI Grundlagen Java Remote Method Invocation Erweiterung des Java Programmiermodells für Verteilung mehrere JVMs spannen eine verteilte Rechenplattform auf Verteilungseinheiten Java Objekte Verteilungstransparenz orts- und zugriffstransparente Methodenaufrufe an verteilten Java Objekten C.7 C.8

2 2.1 Verteilte Java Objekte Schnittstelle verteilte Java Objekte / RMI-Objekte implementieren spezielle Java-Interfaces genauer: mindestens ein Java-Interface, das direkt oder indirekt von java.rmi.remote erbt dient als Marker, enthält keine Methoden alle Methoden in von java.rmi.remote erbenden Interfaces müssen die Exception java.rmi.remoteexception deklarieren zeigt Fehler bei entfernten Aufrufen an in der Regel At-Most-Once-Semantik es kann auch eine Basisklasse deklariert werden, z.b. java.io.ioexception oder java.lang.exception 2.1 Verteilte Java Objekte (2) Beispiel public interface Printer implements java.rmi.remote { public void print( String s ) throws java.rmi.remoteexception; C.9 C Verteilte Java Objekte (2) Entfernt ansprechbare Methoden entfernt sind nur die Methoden aus Interfaces ansprechbar, die von Remote erben andere Methoden und Instanzvariablen sind nur lokal ansprechbar Referenzen Referenzen nur mit dem Namen eines Remote-Interfaces typisieren nicht mit dem Klassennamen der Implementierung Beispiel: avo.printer p; try { p.print( Testdruck ); catch( java.rmi.remoteexception e) { 2.2 Erzeugen eines RMI-Objekts Übliches Vorgehen Implementierungsklasse erbt/implementiert mind. ein Remote-Interface Implementierungsklasse erbt von java.rmi.server.unicastremoteobject bereitet Objektinstanz für entfernte Aufrufe: exportiert Objekt Alternative Implementierungsklasse erbt/implementiert mind. ein Remote-Interface manuelles Vorbereiten für entfernte Aufrufe: Aufruf von java.rmi.server.unicastremoteobject.exportobject( obj, ) C.11 C.12

3 2.2 Erzeugen eines RMI-Objekts (2) Beispiel public class MyPrinter extends java.rmi.unicastremoteobject implements avo.printer { public void print( String s ) throws java.rmi.remoteexeception { 2.2 Erzeugen eines RMI-Objekts (3) RMI Compiler erzeugt Stubklasse für Clientseite nur bis Java 1.4 notwendig ab Java 1.5 (Java 2 Version 5) generische Stubs erzeugt Skeletonklasse für Serverseite nur bis Java 1.1 notwendig ab Java 1.2 generische Skeletons Kommando rmic z.b. für avo.myprinter wird Stubklasse avo.myprinter_stub erzeugt C.13 C Erzeugen eines RMI-Objekts (4) Stubklasse implementiert alle Remote-Interfaces der ursprünglichen Objektklasse Compiler erkennt Remote-Interfaces an Marker-Interface java.rmi.remote Objekte der Stubklasse werden als Stellvertreter auf Clientseite benutzt Client hat Java Objektreferenz auf Stubobjekt statt auf lokales Objekt 2.2 Erzeugen eines RMI-Objekts (5) Beispiel für das Erzeugen des Objekts im Java-Code avo.printer p = new avo.myprinter();// Erzeugung des Objekts Objekt wurde durch Basisklasse automatisch exportiert sofort von außen (entfernt) ansprechbar lokaler Aufruf wie bisher entfernter Aufruf (?) Referenz auf RMI-Objekt notwendig Client Stubobjekt Skeleton RMI-Objekt C.15 C.16

4 2.3 Finden initialer Referenzen Namensdienst zum Registrieren von Objekten Klasse java.rmi.registry.locateregistry erlaubt das Erzeugen einer Namensdienst-Instanz erlaubt das Erzeugen einer Objektreferenz zu einer (entfernten) Namensdienst-Instanz Hostname und Portnummer für TCP/IP-Verbindungen zum Namensdienst müssen bekannt sein Objektreferenz ist vom Remote-Interface java.rmi.registry.registry bind( String s, Remote obj ) registriert Objekt obj unter Name s lookup( String s ) gibt Objektreferenz für Objekt mit Namen s zurück 2.3 Finden initialer Referenzen (2) Naming-Interface abkürzender Zugriff auf bestehende Registry statische Methoden der Klasse java.rmi.naming bind( String s, Remote obj ) registriert Objekt obj unter Name s lookup( String s ) gibt Objektreferenz für Objekt mit Namen s zurück String s ist von der Form: rmi://host:port/objectname host = Rechner, auf dem Registry läuft port = Portnummer, unter der Registry registriert ist objectname = Objektname beim Registrieren bzw. Nachfragen C.17 C Finden initialer Referenzen (3) Beispiel auf Serverseite public class MyPrinter extends java.rmi.unicastremoteobject implements avo.printer { static void main( String [] args ) { avo.printer p = new avo.myprinter(); java.rmi.naming.bind( "rmi:myprinter", p ); public void print( String s ) throws java.rmi.remoteexeception { C Finden initialer Referenzen (4) Beispiel auf Clientseite public class MyClient { static void main( String [] args ) { avo.printer p; p= (avo.printer) java.rmi.naming.lookup( "rmi:myprinter" ); try { p.print( Testdruck ); catch( java.rmi.remoteexception e) { C.20

5 2.4 Parameterübergabe Parameterübergabesemantik bei lokalen Aufrufen Call-By-Value für Nicht-Objekttypen (z.b. Integer) Call-By-Object-Reference für Standard-Java-Objekte und lokale RMI-Objekte entfernte RMI-Objekte Referenz auf Stubobjekt wird übergeben Client verwendet Stubobjekt wie lokales Objekt Call-By-Object-Reference Semantik für RMI-Objekte Objekt Instanzvariable Aufruf übergebene Referenz 2.4 Parameterübergabe (2) Parameterübergabesemantik bei entfernten Aufrufen Marshalling der Parameter Parameter werden serialisiert (Java Serialization) Erzeugung eines Bytestroms aus den Parametern Übertragung des Bytestroms Regenerierung der Datentypen und Java-Objekte aus Bytestrom Call-By-Value für Nicht-Objekttypen (z.b. Integer) Datentypen werden kopiert Beispiel: Objekt Aufruf 42 Instanzvariable 42 übergebener Wert Knotengrenze C.21 C Parameterübergabe (3) serialisierbare Java-Objekte und lokale, nicht-exportierte RMI-Objekte Serialisierung führt zu vollständiger Kopie eines Objekts und seiner untergeordneten Objekte evtl. große transitive Hülle zu übertragender Daten aber: Erhaltung der Objektstruktur über alle Parameter Call-By-Copy Semantik Objekt Instanzvariable Knotengrenze Aufruf übergebene Objektstruktur C Parameterübergabe (3) Parameterübergabesemantik bei entfernten Aufrufen (fortges.) nicht-serialisierbare Java-Objekte nicht übertragbar: MarshalException lokale, exportierte RMI-Objekte Einfügung eines geeigneten Stubobjekts in den Bytestrom Regenerierung des Stubobjekts auf der Empfängerseite Call-By-Object-Reference Semantik für lokale RMI-Objekte entfernte, exportierte RMI-Objekte Einfügung des vorhandenen Stubobjekts in den Bytestrom Call-By-Object-Reference Semantik für entfernte RMI-Objekte Objekt Aufruf übergebene Referenz Instanzvariable C.24

6 2.5 Beispiel 2.5 Beispiel (2) Aufbau der Referenz über Namensdienst Aufbau der Stubs und Skeletons MyClient MyPrinter MyClient MyPrinter JVM Client 1:Ref 3:Ref 2:bind() 4:lookup() JVM Server JVM Client JVM Server JVM Registry Registry JVM Registry Registry C.25 C.26 3 Programmiermodell 3 Programmiermodell (2) Erweiterung des Java-Programmiermodells Programmiermodell von Java Wesentliche Änderungen gegenüber Java Java RMI Interface obligatorisch Exception-Handling obligatorisch veränderte Parameterübergabesemantik bei übergebenen Nicht-RMI-Objekten Zugriffstransparenz verletzt keine Erkennung von doppelten Object-Locks Deadlock beim Wiedereintritt in das selbe RMI-Objekt Bewahrte Konzepte aus dem Java-Programmiermodell Objekte Methodenaufrufe syntaktisch gleich Parameterübergabesemantik für übergebene RMI-Objekte und Nicht-Objekte Typisierung volle Typisierung im verteilten Fall (dynamische) Type-Casts auch für RMI-Objekte möglich Stubobjekte besitzen alle Methoden des Originals Garbage Collection transparente Speicherbereinigung verteiltes Verfahren zur Speicherbereinigung basierend auf Leases C.27 C.28

7 4 Dynamisches Klassenladen Deserialisierung Objektinstanzen werden regeneriert Instanzvariablen werden restauriert pro JVM und pro Objekt muss Klasse verfügbar sein im Verteilten System Verfügbarkeit der Klassen nicht automatisch garantiert Serialisierter Bytestrom enthält Objektdaten keine Klassen Klassenname wird übertragen Klasse lokal vorhanden: Verwendung für regenerierte Objektinstanz Klasse nicht lokal vorhanden: Möglichkeit des dynamischen Ladens der Klasse über das Netzwerk Class-Path (?) 4 Dynamisches Klassenladen (2) Serverseite Bereitstellung der Klassen über einen externen Server Web-Server FTP-Server File-Server Codebase-URL gibt Wurzel für Klassen pro Server an Codebase muss beim Server-Lauf festgelegt werden Java Property java.rmi.server.codebase liefert Codebase-URL z.b. java -Djava.rmi.server.codebase= C.29 C.30 4 Dynamisches Klassenladen (3) 4 Dynamisches Klassenladen (4) Weitergabe von Referenzen auf RMI-Objekte z.b. bei Registrierung in Registry oder Namensdienst Stubobjekt wird serialisiert RMI-System trägt Klassenname und Codebase in Bytestrom ein empfangendes RMI-System: 1. Suche der Klasse lokal 2. falls nicht gefunden: Laden der Klasse über Codebase + Klassenname z.b. Klasse avo.myprinter_stub unter MyPrinter_Stub.class 3. falls nicht gefunden: Laden der Klasse über clientseitig definierte Codebase (z.b. über Codebase-Property) 4. falls nicht gefunden: ClassNotFoundException für entfernt geladene Klassen steht Codebase für erneute Weitergabe fest Beispiel Webserver JVM Registry Registry Code für MyPrinter_Stub wird dynamisch geladen MyPrinter JVM Server C.31 C.32

8 4 Dynamisches Klassenladen (5) 5 Implementierung Beispiel MyClient MyPrinter Vorgabe eines RMI-Gerüstes durch Sun Microsystem verschiedene Implementierungen möglich meist jedoch die von Sun verwendet (Package sun.rmi) JVM Client JVM Server Webserver JVM Registry Registry Code für MyPrinter_Stub wird dynamisch geladen C.33 C Client-Seite Implementierung der Stubs 5.1 Client-Seite (2) Stub generalisiert Aufrufe RemoteObject RemoteStub MyPrinter_Stub 0..1 <<Interface>> RemoteRef sichtbare RMI-Komponenten RemoteObject Basisklasse für Stubs und RMI-Objekte RemoteStub Basisklasse für alle Stubs RemoteRef Interface für Protokollimplementierung Aufruf der invoke()-methode an RemoteRef wie bei Java-Reflection Method-Objekt bezeichnet Methode, Object-Array bezeichnet Parameter Java Remote Method Protocol (JRMP) im Wesentlichen Java-Serialisierung Annotierung der Codebase, falls vorhanden Signalisierung von Aufrufen Multiplexen mehrerer Aufrufe Adressierung über Hostname/IP-Adresse, Portnummer Bestandteil der RemoteRef weitere Adressierung über Objektidentifikator C.35 C.36

9 5.2 Server-Seite generisches Skeleton nimmt JRMP-Anfragen entgegen interpretiert Protokoll, deserialisiert Objekte Aufruf der lokalen Methode über Reflection Tabelle der exportierten Objekte Zuordnung von Anfragen zu RMI-Objekten durch Objektidentifikator mind. lokal eindeutige Objektnummern zugeordnet werden beim Export zugeteilt Identifikation exportierter, lokaler RMI-Objekte Ersetzung durch Stub beim Marshalling 5.3 Socket-Factories RMI-Implementierungen benutzen Sockets zur Kommunikation java.net.serversocket und java.net.socket stattdessen Einsatz von anwendungsspezifischen Sockets möglich Socket-Factory erzeugt anwendungsspezifische Sockets Übergabe der Factory an das RMI-System z.b. als Parameter zum Konstruktor von java.rmi.unicastremoteobject RMI-Stub-Objekt enthält Verweis auf Socket-Factory wird evtl. dynamisch geladen wird zur Kommunikation eingesetzt Einsatz z.b. Verschlüsselung (SSL) C.37 C.38 6 Beispiel: White-Board Anwendungsszenario White-Board-Server als Objekt Clients als Objekte 6.1 Interaktionsmuster Mitteilung von Änderungen auf dem White-Board White-Board White-Board 1: sendevent 1.1: notify Client Client Client Client Client Client Clients referenzieren White-Board-Objekt Clients registrieren sich selbst beim White-Board White-Board-Objekt kennt alle Clients C.39 Bei Manipulation des White-Board-Inhalts durch Client Senden eines Änderungsereignisses an White-Board (Methodenaufruf) White-Board aktualisiert Zustand und sendet Benachrichtigungan an alle Clients C.40

10 6.2 RMI-Implementierung Schnittstelle White-Board public interface WhiteBoard implements java.rmi.remote { public void register( WhiteBoardClient c ) throws java.rmi.remoteexception; public void sendevent( WhiteBoardEvent ev ) throws java.rmi.remoteexception; Schnittstelle Client public interface WhiteBoardClient implements java.rmi.remote { public void notify( WhiteBoardEvent ev ) throws java.rmi.remoteexception; C RMI-Implementierung (2) White-Board public class MyWhiteBoard extends java.rmi.unicastremoteobject implements WhiteBoard { static void main( String [] args ) { avo.whiteboard c = new avo.mywhiteboard(); C RMI-Implementierung (3) Client public class MyClient extends java.rmi.unicastremoteobject implements WhiteBoardClient { avo.whiteboard s; static void main( String [] args ) { avo.whiteboardclient c = new avo.myclient(); public MyClient() { s = java.rmi.naming.lookup( ); s.register( this ); C.43 7 Aktivierung und Deaktivierung Zweck persistente Objektimplementierungen konzeptionelles Objekt überlebt temporäre Objektimplementierungen Laststeuerung nicht alle Objektimplementierungen müssen in JVMs vorgehalten werden (aktiv sein) Realisierung persistente entfernte Referenzen überleben das Passivieren eines verteilten Objekts überleben die JVM eines passivierten verteilten Objekts triggern das Reaktivieren einer JVM und des Objekts C.44

11 7.1 Terminologie Aktives Objekt (active object) verteiltes Objekt realisiert durch eine exportierte Implementierungsinstanz in einer passenden JVM Passives Objekt (passive object) momentan nicht durch Implementierung repräsentiertes aber dennoch aktivierbares verteiltes Objekt evtl. nicht einmal JVM dafür vorhanden entfernte Referenzen (Stubs) sind bereits im Umlauf 7.2 Architektur Aktives Objekt aktuelle, normale RMI-Referenz (RemoteRef) zum aktiven Objekt wird in aktivierbaren Stub eingebettet und verwendet für Aufrufe Fehlersituation eingebettete RMI-Referenz funktioniert nicht mehr z.b. Absturz der Server-JVM z.b. Passivierung des RMI-Objekts Aktivierung (activation) Transformation eines passiven in ein aktives Objekt in der Regel Aktivierung auf Anfrage, d.h. bei Methodenaufruf (Lazy activation) C.45 C Architektur (2) 7.2 Architektur (3) Stub des aktivierbaren Objekts enthält normale RMI-Referenz auf einen Activator enthält eine Aktivierungs-ID bezeichnet Objekt eindeutig gegenüber Activator im Fehlerfall: Kontaktierung des Activators Skeleton Activator JVM Activator ermittelt Activation-Descriptor (Activator verwaltet Datenbank) Activation-Group-ID Bezeichner für JVM, die Gruppe aktivierbarer Objekte beherbergt Klassenname und Codebase für RMI-Objekt objektspezifische Initialisierungsdaten (MarshalledObject) Client-Stub Skeleton RMI-Objekt JVM C.47 C.48

12 7.2 Architektur (3) Activator (fortges.) startet Activation-Group falls nötig eigene JVM initialisiert Activation-Group triggert Activation-Group zur Erzeugung des RMI-Objekts neues RMI-Objekt Initialisierung mit objektspezifischen Daten z.b. über Datei, welche persistenten Zustand hält Rückgabe einer normalen Referenz an den Activator Rückgabe der Referenz an den ursprünglichen Stub 7.3 Marshalled Object Container für serialisiertes Objekt serialisiertes Daten-Objekt wird in ein MarshalledObject eingebettet aus MarshalledObject kann Datenobjekt deserialisiert werden Vorteil des Einsatzes MarshalledObject enthält Datenstrom der Serialisierung benötigt jedoch zur Laufzeit nicht die Klasse des serialisierten Objekts MarshalledObject kann gespeichert und weitergegeben werden z.b. durch Serialisierung des MarshalledObject jedoch kein Klassenladen erforderlich Stub des aktivierbaren Objekts Einbetten der Referenz in die RemoteRef C.49 C Erzeugen eines aktivierbaren Objekts Übliches Vorgehen Implementierungsklasse erbt von java.rmi.activation.activatable zusätzlicher Konstruktor für die Aktivierung public MyImpl( ActivationID id, MarshalledObject data ) id ist ein Identifikator, der das zu aktivierende Objekt beschreibt data ist ein serialisiertes Objekt, das zur Initialisierung eines zu aktivierenden Objekts dienen kann (z.b. Filename für Daten etc.) Konstruktor ruft Konstruktor der Basisklasse für das Exportieren auf Registrierung des Objekts beim Aktivierungsmechanismus im (Default-) Konstruktor Basisklassenmethode getid liefert eine ActivationID: eindeutiger Bezeichner für aktivierbares Objekt 7.4 Erzeugen eines aktivierbaren Objekts (2) Alternatives Vorgehen ohne Vererbung zusätzlicher Konstruktor für die Aktivierung (siehe vorherige Folie) Konstruktor ruft statische Methode zum Exportieren auf: java.rmi.activation.activatable.exportobject( ) Aufruf liefert ActivationID: eindeutiger Bezeichner für aktivierbares Objekt Registrierung des Objekts beim Aktivierungsmechanismus im normalen Konstruktor Erzeugen eines aktivierbaren Objekts ohne Objektinstanz wie beschriebene Möglichkeiten jedoch: Registrierung des Objekts beim Aktivierungsmechanismus ohne Erzeugung einer Implementierung C.51 C.52

13 7.5 Registrierung eines aktivierbaren Objekts 7.5 Registrieren eines aktivierbaren Objekts (2) Registrierung an der ActivationGroup ActivationGroup ist innerhalb einer JVM eine Gruppe von aktiven Objekten letztlich bezeichnet eine ActivationGroup eine JVM Erzeugen einer ActivationGroup new-operation auf java.rmi.activation.activationgroupdesc erzeugt einen Descriptor/Identifikator für eine ActivationGroup Properties können angegeben werden z.b. für Security Policies (sonst keine RMI-Verbindungen zwischen den JVMs möglich) Erzeugen der ActivationGroup über ein ActivationSystem ActivationSystem-Implementierung wird über statische Methode ActivationGroup.getSystem ermittelt Aufruf der Methode registergroup am ActivationSystem liefert eine Instanz von ActivationGroupID zurück ActivationGroupID ist ein Identifikator für die ActivationGroup C.53 Erzeugen eines ActivationDesc für das aktivierbare Objekt ActivationDesc ist ein Deskriptor für das aktivierbare Objekt enthält Klassennamen enthält CodeBase enthält MarshalledObject das zur Initialisierung bei Re-Aktivierung dienen kann enthält ActivationGroupID für die JVM, in der das aktivierbare Objekt laufen soll Erzeugen des ActivationDesc-Objekts durch new-operator ohne Angabe einer ActivationGroupID wird Default-Gruppe verwendet und gegebenenfalls automatisch erzeugt Problem: Defaultgruppe hat meist nicht die richtigen Policy Properties C Registrieren eines aktivierbaren Objekts (3) Registrieren des ActivationDesc-Objekts Aufruf der statischen Methode Activatable.register mit dem ActivationDesc-Objekt als Parameter Rückgabe einer entfernten Referenz auf die Implementierung (Stub mit Fähigkeit der Re-Aktivierung) z.b. anschließend Registrierung im Nameserver 7.6 Aktivierung Aktives Objekt kein besonderes Vorgehen Passives Objekt Objekt hat sich deaktiviert Aufruf von inactiveobject in Klasse Activatable mit ActivationID als Parameter Stubobjekte bekommen keine Verbindung mehr und stoßen Aktivierung an Aktivierung ist transparent für einen Aufrufer lediglich zusätzliche Exceptions möglich (Subklassen von java.rmi.remoteexception) C.55 C.56

14 7.6 Aktivierung (2) Aktivierung durch den Stub Stub kennt die zugehörige ActivationID ActivationID enthält Referenz auf einen Activator Stub fordert einen Activator auf, das Objekt zu aktivieren interner Aufruf der Methode activate am Activator bekommt als Ergebnis eine neue Standard-RMI-Objektreferenz (bei Erfolg), die intern gespeichert wird Activator typischerweise einmal pro System vorhanden kennt aktive und passive Objekt anhand ActivationIDs kennt aktive ActivationGroups Standardimplementierung: Dämon-Prozess rmid intern ist Activator eine RMI-Referenz, die automatisch ermittelt wird C Aktivierung (3) ActivationGroup aktiv Activator beauftragt die ActivationGroup das Objekt zu aktivieren, d.h. mit Hilfe des zusätzlichen Konstruktors zu erzeugen Activator bekommt eine neue Referenz auf das aktivierte Objekt (Standard- Stub) ActivationGroup passiv Activator startet neue JVM und instanziiert ActivationGroup neue ActivationGroup bekommt neue Generationennummer dient zur Realisierung der At-most-once-Semantik Übergabe z.b. über Standardeingabe Rest wie bei aktiver ActivationGroup C Aktivierung (4) Kontrollfluss persistenter Stub kennt Activator über ActivationID: Aufruf von activate Activator kennt aktive Gruppen (lokales Caching bzw. Informationen aus den Gruppen): Aufruf von newinstance am ActivationInstantiator Interface (gehört zur Implementierung der Gruppe) Rückgabe eines transienten Stubs an Activator Rückgabe eines transienten Stubs an den persistenten Stub falls Gruppe passiv: Activator erzeugt neue Gruppe: Starten einer neuen JVM sobald sich Gruppe aktiv meldet: fortfahren wie oben 7.6 Aktivierung (5) Initialisierung des reaktivierten Objekts zusätzlicher Konstruktor erhält ActivationID und ein MarshalledObject MarshalledObject wurde bei Erzeugung des ActivationDesc spezifiziert enthält ein serialisiertes Objekt zur direkten oder indirekten (Re-)Initialisierung, z.b. Dateinamen, Datenbankverweis, entfernte RMI- Referenzen Übergabe des transienten Stubs als MarshalledObject Objekt ist serialisiert: Code muss nicht geladen werden C.59 C.60

15 7.7 Implementierung Aktivierungsmechanismus hauptsächlich durch Interfaces vorgegeben z.b. Activator, ActivationGroup, ActivationSystem, ActivationInstantiator Implementierung durch Property java.rmi.activation.activator.class festlegbar für andere Teile sind feste Klassen vorgesehen, z.b. ActivationDesc, ActivationID, ActivationGroupDesc, ActivationGroupID diese interagieren mit den hinter Interfaces verborgenen Implementierungen 7.7 Implementierung (2) Activator prüft Gruppen bei Absturz von Gruppen werden diese reaktiviert (neu gestartet) Ständige Aktivierung bei Registrierung kann dauerhafte Aktivierung angegeben werden bei Absturz der Gruppe wird dauerhaft aktives Objekt sofort wieder re-aktiviert Interner ActivationMonitor wird pro ActivationGroup erzeugt und vom Activator benutzt Gruppe muss an den ActivationMonitor berichten Aktivierung, Deaktivierung von Objekten in der Gruppe Deaktivierung der Gruppe C.61 C Bewertung Zweistufige Aktivierung und Deaktivierung Objektebene Gruppenebene (JVM-Ebene) Verteilung aktivierbares Objekt wird immer auf gleichen Rechner aktiviert Activator-Referenz hängt an der ActivationID keine Migration möglich aber eventuell Realisierung durch eigene Activator-Implementierung Garbage Collection Objekt müssen sich sauber deaktivieren, sonst bleiben Referenzen stehen 7.9 Weiterführende Links RMI Informationen bei Sun Microsystems RMI Einführung hello-world.html RMI Activation Tutorial Java Serialisierung C.63 C.64

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

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 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

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

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

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

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

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

Schematische Schnittstelle eines Naming-Context-Objekts und des Binding-Iterators. BindingIterator. next_one next_n destroy

Schematische Schnittstelle eines Naming-Context-Objekts und des Binding-Iterators. BindingIterator. next_one next_n destroy 10 Naming-Service (3) Schematische Schnittstelle eines Naming-Context-Objekts und des Binding-Iterators NamingContext resolve list destroy new_context unbind bind rebind bind_context rebind_context bind_new_context

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Nomadic computing mobile Geräte dynamische Dienstnutzung einfacher Zugang zu Geräten Gerät bietet Dienste an allgemeine Dienstnutzung

Nomadic computing mobile Geräte dynamische Dienstnutzung einfacher Zugang zu Geräten Gerät bietet Dienste an allgemeine Dienstnutzung G JINI G.1 1 Überblick Diensteplattform für Java von Sun Microsystems Programmiermodell für Dienste Infrastruktur Unterstützungsdienste Hintergrund Nomadic computing mobile Geräte dynamische Dienstnutzung

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Generics Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4

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

G JINI G.2 G.4. 1 Überblick. 1.1 Programmiermodell. 1.1 Programmiermodell (2) Diensteplattform für Java. Hintergrund. JINI Dienst.

G JINI G.2 G.4. 1 Überblick. 1.1 Programmiermodell. 1.1 Programmiermodell (2) Diensteplattform für Java. Hintergrund. JINI Dienst. 1 Überblick Diensteplattform für Java von Sun Microsystems G JINI Programmiermodell für Dienste Infrastruktur Unterstützungsdienste Hintergrund Nomadic computing mobile Geräte dynamische Dienstnutzung

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

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

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

UNIVERSITÄT LEIPZIG. Mainframe Internet Integration SS2013. Java Remote Method Invocation RMI Beispiel 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,

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

AVO Übung 1. Java RMI, Custom Sockets, Activation. 2. November 2004 (WS 2004) Andreas I. Schmied

AVO Übung 1. Java RMI, Custom Sockets, Activation. 2. November 2004 (WS 2004) Andreas I. Schmied Universität Ulm Fakultät für Informatik Abteilung Verteilte Systeme Projektgruppe AspectIX AVO Übung 1 Java RMI, Custom Sockets, Activation 2. November 2004 (WS 2004) Andreas I. Schmied (schmied@inf...)

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

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

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

Anwendung eines Enterprise Java Beans

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

Mehr

F.1 Überblick. 1 RPC-System in Aufgabe 3. Kommunikationsschicht: tauscht Daten zwischen zwei Rechnern aus

F.1 Überblick. 1 RPC-System in Aufgabe 3. Kommunikationsschicht: tauscht Daten zwischen zwei Rechnern aus F 5. Übung F 5. Übung F.1 Überblick Aufgabe 3 RPC-System im Überblick Marshalling primitiver Datentypen Byteorder Fließkommawerte s und s F.1 Kommunikationsschicht: tauscht Daten zwischen zwei Rechnern

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

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

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

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

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

-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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

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

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen

Mehr

7.1.1 Grundzüge der Fernaufruf-Implementierung

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,

Mehr

Repetitorium Informatik (Java)

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

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

Prof. W. Henrich Seite 1

Prof. W. Henrich Seite 1 Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse

Mehr

Java Beans (22.02.2001)

Java Beans (22.02.2001) Component Based Software Development Java Beans (22.02.2001) Stefan Jäger Robert Kalcklösch Veranstalter: M. Bittner W. Koch Inhalt Einführung in Java Die Java Beans Einsatz und Entwicklung von Beans Enterprise

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

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition

Mehr

Objektserialisierung

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

Mehr

Netzprogrammierung Verteilte Objekte in Java RMI II

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: tolk@inf.fu-berlin.de http://www.robert-tolksdorf.de

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

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 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

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Java Vererbung. Inhalt

Java Vererbung. Inhalt Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

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

Softwareentwicklung in verteilten Umgebungen Middleware Case Studies (Coulouris et al., Kapitel 5 und 19) Dieter Schmalstieg Jens Grubert

Softwareentwicklung in verteilten Umgebungen Middleware Case Studies (Coulouris et al., Kapitel 5 und 19) Dieter Schmalstieg Jens Grubert Softwareentwicklung in verteilten Umgebungen Middleware Case Studies (Coulouris et al., Kapitel 5 und 19) Dieter Schmalstieg Jens Grubert Partly based on material by Victor García Barrios and Paul Krzyzanowski

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

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

Gliederung Einleitung Die Interprozess Kommunikation Zusammenfassung Fragen. .NET Remoting. André Frimberger

Gliederung Einleitung Die Interprozess Kommunikation Zusammenfassung Fragen. .NET Remoting. André Frimberger .NET Remoting André Frimberger 30.11.2004 André Frimberger.NET Remoting 1 Gliederung 1 Einleitung Was ist.net Remoting? 2 Die Interprozess Kommunikation Grundkonzept der Datenkanal Parameterübergabe Instanziierung

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr

Java I Vorlesung 6 Referenz-Datentypen

Java I Vorlesung 6 Referenz-Datentypen Java I Vorlesung 6 Referenz-Datentypen 7.6.2004 Referenzen this, super und null Typkonvertierung von Referenztypen Finale Methoden und Klassen Datentypen in Java In Java gibt es zwei Arten von Datentypen:

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

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

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

Web-Services Implementierung mit Java

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

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

Überblick. Verteilte Anwendungen, Interaktionsformen. implizite, nicht-orthogonale Interaktion. explizite, orthogonale Interaktion

Überblick. Verteilte Anwendungen, Interaktionsformen. implizite, nicht-orthogonale Interaktion. explizite, orthogonale Interaktion Überblick Verteilte Anwendungen, Interaktionsformen 7 Verteilte Anwendungen und 7.1 Verteilte Anwendungen 7.2 Klassifikation von Interaktionsformen explizit implizit orthogonal nicht-orthogonal uniform

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

6 Speicherorganisation

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

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

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003 Test zu Grundlagen der Programmierung Leitung: Michael Hahsler 1. November 00 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: O Bakkalaureat Wirtschaftsinformatik

Mehr

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4 Inhaltsverzeichnis TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA... 1 1 GRUNDLAGEN DER PROGRAMMIERUNG... 4 1.1 Das erste Java-Programm... 4 1.2 Programme und ihre Abläufe... 6 1.3 Entwurf mit Nassi-Shneiderman-Diagrammen...

Mehr

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 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.

Mehr

Ein einfacher Server. .NET Remoting. Klassentypen

Ein einfacher Server. .NET Remoting. Klassentypen Einführung - eine Klienten-Applikation kann mit einer Komponente interagieren die hinter einer Grenze liegt - Remoting ermöglicht eine Kommunikation von Komponenten Kontext-, Applikationsdomänen- (leichtgewichtiger

Mehr

39 Object Request Brokers. 40 Components of an ORB. 40.1 Stubs and Skeletons. 40.1.1 Stub

39 Object Request Brokers. 40 Components of an ORB. 40.1 Stubs and Skeletons. 40.1.1 Stub 39 Object Request Brokers 40.1 Stubs and s invoke methods at remote objects (objects that run in another JVM) Stub: Proxy for remote object example ORBs: RMI, JavaIDL : Invokes methods at remote object

Mehr

Java Einführung Klassendefinitionen

Java Einführung Klassendefinitionen Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse

Mehr

Java Internationalization (i18n) 8. April 2003

Java Internationalization (i18n) 8. April 2003 Java Internationalization (i18n) 8. April 2003 Java i18n Übersicht i18n = i plus 18 Buchstaben nternationalizatio plus n Internationalisierung Lokalisierung Pakete java.util, java.text http://java.sun.com/docs/books/tutorial/i18n

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

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Innere Klassen Innere Klassen Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Literatur: Java Tutorial & Arnold, K., Gosling, J. und Holmes,D... Page 1 Innere Klassen Der erste

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0 9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Überschreiben von Methoden

Überschreiben von Methoden Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra

Mehr

Networking. Motivation Grundlagen von Sockets Klasse Socket Klasse ServerSocket Exceptions Klasse URL

Networking. Motivation Grundlagen von Sockets Klasse Socket Klasse ServerSocket Exceptions Klasse URL Networking Motivation Grundlagen von Sockets Klasse Socket Klasse ServerSocket Exceptions Klasse URL Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1 Netzwerkprogrammierung in Java Programme schreiben,

Mehr

11.1 Indirektes Binden (3) 11.1 Indirektes Binden (4) Objektadapterkonfiguration. Unmittelbarer Vorteil des indirekten Bindens

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

Mehr

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik

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