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



Ähnliche Dokumente
7 Remote Method Invocation (RMI)

Konzepte von Betriebssystem-Komponenten Middleware RMI

AVO Übung 4. AspectIX. 18. Januar 2005 (WS 2004) Andreas I. Schmied Universität Ulm Fakultät für Informatik

Java RMI Remote Method Invocation

C.38 C.40 C Socket-Factories. 5.2 Server-Seite. 6.1 Interaktionsmuster. 6 Beispiel: White-Board. generisches Skeleton

AVO-Übung 1. Übungsszenario, Entwicklungswerkzeuge. Andreas I. Schmied

JINI Security & Scalability. JINI Security

Java Remote Method Invocation (RMI)

Einführung: Verteilte Systeme - Remote Method Invocation -

8.1.5 Java RMI Remote Method Invocation

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

PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker

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

1 Motivation. 1 Motivation. Standard Middleware für objektorientierte Anwendungen. Motivation. Fragmentierte Objektmodel. Java RMI

B.33 B Programmiermodell. 3 Programmiermodell (2) Erweiterung des Java-Programmiermodells. Wesentliche Änderungen gegenüber Java

AVID-Übung 5. Asynchronous.NET Remoting. 15. Juli Andreas I. Schmied Abteilung Verteilte Systeme Projektgruppe AspectIX

RMI Server und Client

Repositories. AVO-Übung 4. Activation Wiederholung. Activation Änderungen an IOR. CORBA Activation, INS, PI. Welche Repositories kennen Sie?

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

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

Remote Method Invocation

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

JINI - DER START Kursübersicht Dieses Skript zeigt Schritt für Schritt, wie Sie ein erstes Jini-Beispiel zum Laufen bringen können, hoffentlich!

Architekturen für verteilte Internetdienste

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

AVID-Übung 3. EJB mit JBoss und Eclipse. 17. Juni Andreas I. Schmied Abteilung Verteilte Systeme Projektgruppe AspectIX

Remote-Objekte. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1

Remote Method Invocation

C Java RMI C.2 C.4. 1 Java. 1 Java (2) 1 Java (3) Objektorientierte Sprache. Objektorientierte Sprache (fortges.) Objektorientierte Sprache (fortges.

Praktikum Verteilte Anwendungen

Praktikum aus Softwareentwicklung 2, Stunde 14

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

KAPITEL 1 RMI Verteilte Programmierung unter JAVA von Anja Austermann

Vorbereitungen Download. AVO-Übung 6. Beispiel. Slice. Varianten u.a. für Linux, Windows, OS X ICE-Dokumentation ICE-Binaries (inkl.

36.2 Example ClassLoader Example Appletviewer

Modulare Anwendungen und die Lookup API. Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team

7.1.5 Java RMI Remote Method Invocation ( (

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

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

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

Remote Method Invocation

Implementierung III. Implementierung IV

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

Praktikum aus Softwareentwicklung 2, Stunde 8

Build Management Tool?

Pyro - Python Remote Objects

Tag 8 Repetitorium Informatik (Java)

Client/Server-Programmierung

Client/Server-Programmierung

Verwendung der Gruppenkommunikation JGroups

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

D.1 Organisatorisches

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

14. RMI - Remote Method Invocation

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

Warum EJB Technologie (1)?

AVO Übung 3. Lösung 2, CORBA. 30. November 2004 (WS 2004) Andreas I. Schmied Universität Ulm Fakultät für Informatik

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

H.1 FORMI: An RMI Extension for Adaptive Applications H.1 FORMI: An RMI Extension for Adaptive Applications

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

Pyro - Python Remote Objects

Enterprise JavaBeans Überblick: 8. Test-Driven Development. 8.1 Einleitung 8.2 Beispiel 8.3 Anwendung mit Eclipse und dem JBoss Application Server

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

Java-Programmierung. Remote Method Invocation - RMI

Enterprise JavaBeans Überblick

Remote Methode Invocation (RMI) ETIS SS05

Mobile und Verteilte Datenbanken

Verteilte Systeme. SoSe Universität Siegen Tel.: 0271/ , Büro: H-B Stand: 14.

C Java RMI. 1 Java. Objektorientierte Sprache

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

Verteilte Systeme SS Universität Siegen Tel.: 0271/ , Büro: H-B Stand: 29.

J a v a S e r v l e t s

Jan-Ole Giebel. 8. Juni 2012

Build Management Tool?

Informatik II Übung 06. Benjamin Hepp 5 April 2017

Überblick. Java RMI Java Remote Method Invocation Marshalling und Unmarshalling Aufgabe 1. VS-Übung (SS12) Java RMI 1 1

Internetanwendungstechnik (Übung)

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi

E.1 Object Request Brokers

Java Security. Sicherheit durch Classloader, Security Manager und Co. Prof. Dr. Nikolaus Wulff

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

Überblick. Java RMI Java Remote Method Invocation Marshalling und Unmarshalling Aufgabe 1. VS-Übung (SS14) Java RMI 1 1

Kurzanleitung Eclipse

Modernisierung von Forms durch neues Look&Feel

AvO-Übung 2 Remote Method Invocation

Überblick. Java RMI Java Remote Method Invocation Marshalling und Unmarshalling Aufgabe 1. VS-Übung (SS16) Java RMI 1 1

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

Java Security. Sicherheit durch Classloader, Security Manager und Co. Prof. Dr. Nikolaus Wulff

TI2 Übung 6. m68k-assembler. 25. Januar 2005 (WS 2004) Andreas I. Schmied Universität Ulm Fakultät für Informatik

Kapitel 8: Serialisierbarkeit

Hierarchische Benennung von Interfaces und Klassen

Benutzerauthentifizierung und Zugriffsschutz mit JAAS

Mobile und Verteilte Datenbanken

- dynamisches Laden -

Transkript:

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

1 Beispielprojekte Autor: Felix.Traier@inf... avo1 HelloWorld avo2a Bank Beispiel avo2b... mit XOR Encoding (avo2c... mit Activatable Objects) Verwendung use eclipse3-gtk Import/Existing Project... Copyright 2004, Andreas I. Schmied, Abteilung Verteilte Systeme, Universität Ulm 2/10

1 Beispielprojekte Aufbau der Projekte Gezipptes Eclipse-Projekt Startklassen RMIClient, RMIServer bzw. RMISetup integrierter Nameserver anstatt rmiregistry integrierter Webserver für RMIClassLoader adaptiert von http://java.sun.com/products/jdk/rmi/class-server.zip Shell, beliebige IDE, am besten Eclipse nutzen readme.txt lesen! Eclipse: Compare With/Each Other zwischen Beispielen avo2a/src/infvs.avo2a <-> avo2b/src/infvs.avo2b ANT-Files Launches für ANT-Tasks startbare JARs, z.b. java -jar avo2b-rmiclient.jar Copyright 2004, Andreas I. Schmied, Abteilung Verteilte Systeme, Universität Ulm 3/10

2 Aufgaben Grundlage: avo2a 1. Value Objects Account soll nicht mehr Remote, sondern nur noch im Server zugreifbar sein Kontodaten als serialisiertes AccountData Object verschicken Kontonummer, Client-Referenz, Kontostand bzw. Transaktionswert Zugriff über Client Objekt, z.b.: AccountData[] accs = Client.getAccounts(); Client.deposit(AccountData d); Client.withdraw(AccountData d); Implikationen bei Änderung der Daten im RMIClient? Copyright 2004, Andreas I. Schmied, Abteilung Verteilte Systeme, Universität Ulm 4/10

2 Aufgaben 2. Activation Client-Objekte sollen passivierbar werden Account-Daten abspeichern Setup-Klasse anstatt RMIServer 1. erzeugt Activation Group 2. registriert Objekte 3. beendet sich Client bekommt aktivierbare Referenzen von Registry automatisch gestartete VM(s) beobachten (Logging ->Literaturliste) Achtung: Immer Multi-Host Szenarien testen! Copyright 2004, Andreas I. Schmied, Abteilung Verteilte Systeme, Universität Ulm 5/10

3 Dynamisches Klassenladen Codebase Property für Serverprozess java -Djava.rmi.server.codebase=http://myhost:myport... wird in serialisiertem Stub annotiert void java.io.objectoutputstream.annotateclass(java.lang.class cl); "localhost" bringt im VS wenig... java.net.inetaddress.getlocalhost().gethostname() Classpaths benötigen trailing slash am Ende einer Pfadangabe Properties auch während Programmstart setzbar void java.lang.system.setproperties(java.util.properties props); Copyright 2004, Andreas I. Schmied, Abteilung Verteilte Systeme, Universität Ulm 6/10

3 Dynamisches Klassenladen Registry darf keinen direkten Zugriff auf Klassen registrierter Objekte haben Beispiel: 1. Server meldet Objekt an 2. Registry erhält serialisierten Stub inkl. Codebase 3. löst Codebase nicht auf, da Klassen über Classpath lesbar 4. deserialisiert Stub 5. Anfrage von Client 6. antwortet mit serialisiertem Stub ohne Codebase 7. Client kann Klassen nicht nachladen! Classpath löschen! (bzw. Codebase korrekt setzen) Copyright 2004, Andreas I. Schmied, Abteilung Verteilte Systeme, Universität Ulm 7/10

4 Sicherheit Security Manager notwendig, damit Klassen nachgeladen werden können System.setSecurityManager(new java.rmi.rmisecuritymanager()); Security Policies steuern Verhalten des Security Managers java -Djava.security.policy=my-policy-file... Policy File mit Grants permission class ["target"] [, "actions"]; grant { // permission java.security.allpermission; // böse! permission java.net.socketpermission "localhost:1099", "connect, resolve, accept"; }; Unterscheiden nach Client, Server, (In-Server-) Registry Copyright 2004, Andreas I. Schmied, Abteilung Verteilte Systeme, Universität Ulm 8/10

5 Typen Typinformation im RMI-System Beispiel: Remote r = java.rmi.naming.lookup("my-object-id"); Object o = (Object) r; Bank b; if (o instanceof Bank) b = (Bank) o; // Trivial Upcast // Type Reflection // Downcast Upcast (trivial) möglich Downcast mit Sprachmitteln möglich komplette Typinformation in Stub enthalten Klassen bei Deserialisierung bereits geladen nur bedingt in anderer Middleware möglich! Copyright 2004, Andreas I. Schmied, Abteilung Verteilte Systeme, Universität Ulm 9/10

6 Literatur RMI Tutorial http://java.sun.com/docs/books/tutorial/rmi/index.html RMI Guide http://java.sun.com/j2se/1.4.2/docs/guide/rmi/ RMI over SSL http://java.sun.com/j2se/1.4.2/docs/guide/rmi/socketfactory/sslinfo.html Activation Tutorial http://java.sun.com/j2se/1.4.2/docs/guide/rmi/activation/overview.html ANT http://ant.apache.org Java Logging Facility http://java.sun.com/j2se/1.4.2/docs/guide/util/logging/ JUnit Tests http://www.junit.org Zum Vergleich ist die Versionsnummer "1.4.2" überall auch durch "1.5.0" zu ersetzen. Copyright 2004, Andreas I. Schmied, Abteilung Verteilte Systeme, Universität Ulm 10/10