Java RMI Remote Method Invocation



Ähnliche Dokumente
Remote Method Invocation

Java-Programmierung. Remote Method Invocation - RMI

Remote Method Invocation

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

Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06

Der lokale und verteilte Fall

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

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

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

Mobile und Verteilte Datenbanken

Konzepte von Betriebssystem-Komponenten Middleware RMI

Mobile und Verteilte Datenbanken

Java Remote Method Invocation (RMI)

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

Übungen zu Softwaretechnik

Remote Method Invocation

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

Einführung in die Programmierung

Einführung: Verteilte Systeme - Remote Method Invocation -

Objektorientierte Programmierung

Applet Firewall und Freigabe der Objekte

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Synchronisations- Assistent

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

Nutzung von GiS BasePac 8 im Netzwerk

Factory Method (Virtual Constructor)

Algorithmen und Datenstrukturen

Einstieg in die Informatik mit Java

8.1.5 Java RMI Remote Method Invocation

Client/Server-Programmierung

Client/Server-Programmierung

VS Praktikum 03 Konzept

Wiederholung: Beginn

-Testen verteilter Anwendungen

WinVetpro im Betriebsmodus Laptop

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version Optional einen DHCP Server.

Szenario 3: Service mit erweiterter Schnittstelle

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Programmieren in Java

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

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

Grundlagen verteilter Systeme

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Typumwandlungen bei Referenztypen

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

[DvBROWSER] Offline-Viewer für [DvARCHIV] und [DvARCHIVpersonal] Version 2.2

ISA Server 2004 Erstellen einer Webverkettung (Proxy-Chain) - Von Marc Grote

Import und Export von Übergängern

Anbindung des eibport an das Internet

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Java: Vererbung. Teil 3: super()

Java RMI, CORBA und Firewalls

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

AutoCAD Dienstprogramm zur Lizenzübertragung

Objektorientierte Programmierung. Kapitel 12: Interfaces

Multimedia und Datenkommunikation

Delegatesund Ereignisse

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Das Model View Controller (MVC) Konzept

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Remote Methode Invocation (RMI) ETIS SS05

Die Backup-Voreinstellungen finden Sie in M-System Server unter dem Reiter "Wartung".

Abschnitt 12: Strukturierung von Java-Programmen: Packages

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

Konfiguration des Novell GroupWise Connectors

Virtueller Campus. Virtueller Campus Horw mit interaktiver Steuerung. HowTo: Externe Bibliotheken

3 Objektorientierte Konzepte in Java

Architektur des agimatec-validation Frameworks

E Mail Versand mit der Schild NRW Formularverwaltung

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Anleitung Inspector Webfex 2013

Prinzipien Objektorientierter Programmierung

Powermanager Server- Client- Installation

Anleitung zur Einrichtung eines Netzwerkes für den Gebrauch von GVService unter Windows 7

Drei Möglichkeiten zum Betrieb von DPV über das Internet. Dr. Matthias Grabert und Walter Geiselmann Uni Ulm

WebService in Java SE und EE

TYPO3 Tipps und Tricks

Konfiguration von Igel ThinClients fu r den Zugriff via Netscaler Gateway auf eine Storefront/ XenDesktop 7 Umgebung

Psyprax GmbH. Wichtig für alle Netzwerkinstallationen: Psyprax GmbH

Leitfaden: geoport in FlowFact

Studentische Lösung zum Übungsblatt Nr. 7

Client-Server mit Socket und API von Berkeley

SUB-ID- VERWALTUNG MIT GPP SETUP-GUIDE FÜR PUBLISHER

Registrierung für eine Senioren IPIN Ab 17. Mai 2011 können sich Spieler für eine Senioren IPIN (Lizenz) registrieren.

Transkript:

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 in der Registry Objekte, deren Methoden von entfernten Clients aufgerufen werden können. Registry ist Name Service, d.h. Abbildung von Name auf Objekt. Der Client führt ein Lookup in der Registry nach einem bestimmten Namen durch und erhält Stub des entfernten Objekts als Ergebnis. Anschließend kommuniziert der Client direkt mit dem Server durch Aufruf von Stub-Methoden. Diese werden über das Netz zur Server geschickt und dort ausgeführt. Das Ergebnis kommt wieder über das Netz zum Client. Aufrufe sind synchron, d.h. Client wartet auf das Ergebnis. Registry kann in Serverprozess sein oder separate JVM. Registry verwendet TCP/IP-Port zur Kommunikation mit Server und Client.

Remote Object verwendet eigenen TCP/IP-Port zur Kommunikation mit Client. Hinweis: bei Verwendung von Firewalls kann es sein, dass diese Ports gesperrt sind -> Firewall umkonfigurieren. Entfernte Objekte Schnittstelle für entfernte Objekte definiert durch Interface. Diese Schnittstelle erweitert java.rmi.remote. Alle Methoden werfen potentiell RemoteException. Beispiel: import java.rmi.*; public interface HelloWorld extends Remote { String sayhello() throws RemoteException; } Serverseitig wird dieses Interface durch eine Klasse implementiert, die von UnicastRemoteObject erbt und die Schnittstelle implementiert. public class HelloServer extends UnicastRemoteObject implements HelloWorld { } public String sayhello() throws RemoteException { return "Hello World"; } Start der Registry lokal in Server mittels Hilfsklasse LocateRegistry. Könnte auch zum Zugriff auf externe Registry verwendet werden. import java.rmi.registry.locateregistry;

import java.rmi.server.unicastremoteobject; Registry reg = LocateRegistry.createRegistry(1099); Registrieren eines Server-Objektes mit bind (oder rebind). reg.bind("helloserver", new HelloServer()); Erzeugen einer stub-klasse für entfernte Klienten aus HelloServer.java mittels Commandline-Tool rmic. rmic HelloServer -d targetdir Die erzeugt Stub-Klasse muss im Klassenpfad des Clients verfügbar sein. Lookup von HelloServer in Client z.b. mittels RMI Pseudo URL: rmi://rmireghost:rmiregport/name. HelloWorld hellostub = (HelloWorld)java.rmi.Naming.lookup( "rmi://localhost:1099/helloserver"); Verwenden des entfernten Objekts durch Methodenaufrufe. System.out.println(helloStub.sayHello()); Zur Übersetzung des Clients wird die Schnittstelle HelloWorld benötigt. Zur Ausführung wird HelloWorld und die Stub-Klasse benötigt.

Serialisierung der Methodenaufrufe Um einen Methodenaufruf über das Netzwerk zu transportieren erfolgt eine Serialisierung aller Parameter. => Alle Parameter müssen serialisierbar sein. Serialisierung ergibt Kopie der Paramter beim Empfänger. Pointeridentität innerhalb der Parameter garantiert. Parameter vom Typ Remote (z.b. UnicastRemoteObject) werden speziell behandelt: Es wird eine serialisierte Objektreferenz übertragen, nicht der Inhalt. Solche Objekte müssen nicht über die RMI Registry registriert werden. Die RMI-Registry verwendet diesen Mechanismus selbst. Die Registry ist ein Client für alle registrierten Objekte. Der Empfänger verwendet Remote Objekte via RMI, ausser das Objekt ist im Empfänger implementiert. Symmetrie: Ein Client kann zusätzlich auch Server sein und umgekehrt.

Verteilte Garbage Collection Prinzip der automatischen Speicherbereinigung bei RMI beibehalten durch verteilte GC via Reference Counting und Leases. Server merkt sich exportierte Objekte und Zeit für letzte Verwendung (Lease start). Client merkt sich importierte Objekte und sendet periodisch Lease- Renewal Messages zum Server. Stirbt der letzte Client eines Objekts, so folgen keine Renewal Messages und das Objekt wird nach timeout am Server gelöscht. Typische Lease-Intervalle sind 10 Minuten. Nach 5 Minuten versucht der Client einen Lease-Renewal. Bei Fehlschlag folgen einige Wiederholungen. Durch null-setzen von Referenzen plus GC in Client kann Freigabe von Objekten am Server beschleunigt werden. Threading Modell RMI Server können von mehreren Clients parallel verwendet werden. Jeder Request läuft in eigenem Thread ab. Synchronisierung der Server-Operationen beachten!

Bezug zu Projekt zentrales Modell als RMI remote Object implementieren. JavaBeans Event Pattern berücksichtigen. Lokales Modell wirkt als Bridge für entferntes Modell. registriert (Remote)Listener bei zentralem Server-Objekt. zentraler Server notifiziert remote Clients bei Änderungen. Views verwenden weiterhin lokales Modell wie in lokaler Lösung. Ein Client wird zu irgendeiner beliebigen Zeit notifiziert und dazu am Client ein eigener Thread gestartet. Dieser darf nicht direkt mit Swing arbeiten. Synchronisierung mit Swing event-dispatcher thread durch Registrierung einer Aktion (Runnable), die von Swing aus gestartet wird. javax.swing.swingutilities.invokelater( new Runnable() { public void run() { fireevent(e); } });

Class Loader und Security Java RMI erlaubt das Nachladen von Klassen zwischen Server und Client (beide Richtungen), also ausserhalb des normalen CLASSPATH. Das ist aus Sicherheitsgründen normalerweise in Java nicht erlaubt. Abhilfe: Setzen eines geeigneten SecurityManagers (oder alle Klassen über CLASSPATH verfügbar machen). System.setSecurityManager(new RMISecurityManager());

Socket Factories Der RMI-Mechanismus verwendet normalerweise TCP/IP Sockets. Erweiterungen (Spezialisierungen) von RMI sind möglich durch Implementierung eigener SocketFactories. Eine global verankerte SocketFactory wird von RMI verwendet, um Sockets zu erzeugen. Spezielle SocketFactory könnte zum Beispiel Request via http oder https transportieren oder einen ganz andern Transport Layer verwenden. SSL und Routing über http bzw. https wird bereits in Java2 RMI unterstützt. Hinweis: http/https sind one way, also nur Client -> Server.