Mobile und Verteilte Datenbanken



Ähnliche Dokumente
Mobile und Verteilte Datenbanken

Remote Method Invocation

Java-Programmierung. Remote Method Invocation - RMI

Remote Method Invocation

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

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

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Remote Method Invocation

Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06

-Testen verteilter Anwendungen

Client/Server-Programmierung

Client/Server-Programmierung

Java RMI Remote Method Invocation

Übungen zu Softwaretechnik

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

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

Auszug aus JAX-WS Folien

Grundlagen verteilter Systeme

Workflow, Business Process Management, 4.Teil

Java: Vererbung. Teil 3: super()

Der lokale und verteilte Fall

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

Definition Web Service

Warum EJB Technologie (1)?

Java Remote Method Invocation (RMI)

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

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

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

Java und XML 2. Java und XML

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

Webservices. 1 Einführung 2 Verwendete Standards 3 Web Services mit Java 4 Zusammenfassung. Hauptseminar Internet Dienste

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

3 Objektorientierte Konzepte in Java

Grundlagen verteilter Systeme

Konzepte von Betriebssystem-Komponenten Middleware RMI

7.1.5 Java RMI Remote Method Invocation ( (

Szenario 3: Service mit erweiterter Schnittstelle

Synchronisation in Java. Invisible Web

Middleware. im Schweinsgalopp

CORBA. Beispiel einer Middleware-Plattform. Christian Fass WS 2013/14 Software Engineering: Basistechnologien

COMMON OBJECT REQUEST BROKER ARCHITECTURE. Dmytro Pyvovar Otto-von-Guericke Universität Magdeburg

Remote Methode Invocation (RMI) ETIS SS05

Java Einführung Abstrakte Klassen und Interfaces

WebService in Java SE und EE

7 Remote Method Invocation (RMI)

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

Programmieren in Java

E.1 Object Request Brokers

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

J Fernmethodenaufrufe Remote Method Invocation (RMI)

Einführung: Verteilte Systeme - Remote Method Invocation -

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

Algorithmen und Datenstrukturen

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

Autor: Peter Seemann Seminar: Softwarearchitekturen Betreuer: Benedikt Meurer

Wiederholung: Beginn

Praktikum aus Softwareentwicklung 2, Stunde 8

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

Prinzipien Objektorientierter Programmierung

Android Processes & Services

10.1 Remote Method Invocation (RMI)

Verteilte Systeme: Entfernte Methodenaufrufe

Einführung in die Programmierung

Parallele und Verteilte Systeme

Client/Server-Programmierung

Innere Klassen in Java

Kommunikation in verteilten Anwendungen

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Remote Method Invocation (RMI)

Applet Firewall und Freigabe der Objekte

Java RMI, CORBA und Firewalls

VS4 Slide 1. Verteilte Systeme. Vorlesung 4 vom Dr. Sebastian Iwanowski FH Wedel

Distributed Computing Group

Klausur zur Vorlesung Verteilte Systeme im SS 2007 Prof. Dr. Odej Kao 24. Juli 2007

Verteilte Systeme CS5001

Java - Programmierung - Objektorientierte Programmierung 1

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

Client/Server-Systeme

Praktikum Verteilte Anwendungen

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

Factory Method (Virtual Constructor)

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

Kapitel 6. Vererbung

Verteilte Systeme: Übung 4

Musterlösungen zur Klausur Informatik 3

Multiuser Client/Server Systeme

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)

Enterprise Applikation Integration und Service-orientierte Architekturen. 09 Simple Object Access Protocol (SOAP)

Client/Server-Systeme

B Java RMI B.1 B.2. 1 Java. 1.1 Objekte. Objektorientierte Sprache

CORBA. Eine kurze Einführung. Common Object Request Broker Architecture. Ying Lu

Programmiermethodik. Übung 13

SOA. Prof. Dr. Eduard Heindl Hochschule Furtwangen Wirtschaftsinformatik

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

Objektorientierte Programmierung

Einführung in die Programmierung Blockkurs Java

CORBA. Systemprogrammierung WS

Transkript:

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 für verteilte Anwendungen an Verteilte Objekt-Technologie: erlaubt die Interaktion von Objekte über Netzwerke Java RMI: für Java Client und Server müssen in Java implementiert werden Corba: Programmiersprache-unabhängig Clients und Server können in verschiedenen Sprachen implementiert werden RPC: Prozeduraufrufe über Netzwerke erlaubt Aufruf der entfernten Prozeduren als wären es lokale Prozeduren Web Services Dienste sind über das Internet aufrufbar

Kommunikationsarchitektur - Allgemeines Schema Clientrechner Client Applikation Proxies Serverrechner Server (Services) Skeletons Kommunikationsprotokoll des Proxies Service nachschlagen Servicebeschreibung Directory Service des Skeletons Service veröffentlichen

Verteiltes Objekt-Modell Methodenaufrufe können zwischen Objekten in verschiedenen Prozessen passieren Solche Methodenaufrufe heißen entfernte Methodenaufrufe Objekte, die entfernte Methodenaufrufe erlauben, sind entfernte/remote Objekte Im Kern des verteilten Objektmodells: Entfernte Objekt Referenzen: ein Bezeichner für ein entferntes Objekt Clients müssen die Referenz kennen, um die Methoden aufrufen zu können Entfernte Schnittstelle: spezifiziert, welche Methoden entfernt aufrufbar sind Remote Objekt implementiert die Methoden Entfernte und lokale Methodenaufrufe: A entfernter Aufruf B lokaler C Aufruf lokalere Aufruf lokaler Aufruf D entfernter Aufruf F

Kommunikationsarchitektur Corba Clientrechner Client Applikation Proxies Serverrechner Server (Remote Objekte) Skeletons Request-Reply Protokoll des Proxies Remote-Objekt nachschlagen Interface Remote Interface Definition Language (IDL) Naming Service des Skeletons Remote-Objekt veröffentlichen

Java Remote Method Invocation (Java RMI) Clientrechner Client Applikation Proxies Serverrechner Server (Entfernte Objekte) Skeletons Request-Reply Protokoll des Proxies Entfernte Objekte nachschlagen Java Remote Interface Remote Interface RMI Registry des Skeletons Entfernte Objekte veröffentlichen

Remote Procedure Call (RPC) Clientrechner Client Applikation Proxies Serverrechner Server (Entfernte Prozeduren) Skeletons Request-Reply Protokoll des Proxies Entfernte Prozeduren nachschlagen IDL: Remote Service Interface Naming Service des Skeleton Entfernte Prozeduren veröffentlichen

Kommunikationsarchitektur Web Services Clientrechner Client Applikation Proxies Serverrechner Server (Web Dienste) Skeletons SOAP Simple Object Access Protocol des Stubs Service nachschlagen WSDL Web Service Description Language Directory Dienst (UDDI) des Skeletons Service veröffentlichen Universal Description, Discovery and Integration

Java Remote Method Invocation (RMI) Realisierung von verteilter Kommunikation und Methodenaufrufe entfernter Objekte möglich RMI-Client Remote- Interface RMI-Server Stub Skeleton Remote- Objekt Netzwerk

Remote-Interface, Stub und Skeleton Remote-Interface vereinbart Methoden zwischen Client und Server z.b.: public interface ServerInterface extends Remote { public String transmitbinding(bindings b) throws RemoteException; Remote-Objekt implementiert Remote-Interface Client-Stub implementiert das Remote-Interface erledigt Kommunikation zwischen Client-Stub und Server-Skeleton auf Seite des Clients Server-Skeleton erledigt Kommunikation zwischen Client-Stub und Server-Skeleton auf Seite des Servers ruft Methoden des Server-Objektes auf Client-Stub und Server-Skeleton werden automatisch generiert

Server: Remote-Objekt und Java-Registry Bereitstellung der Server-Funktionalität implementiert Remote-Interface z.b.: public class ServerProc extends UnicastRemoteObject implements ServerInterface { protected ServerProc() throws RemoteException { super(); public String transmitbinding(final Bindings b) throws RemoteException { System.out.println("Bindings retrieved:"); System.out.println(b.toString()); return "Server retrieved the bindings " + b.tostring(); muss unter einem Namen bei der Java-Registry auf dem Server gebunden werden: z.b.: try { final Registry reg = LocateRegistry.createRegistry(Registry.REGISTRY_PORT); final ServerProc obj = new ServerProc(); // Bind this object instance to the name "serverproc" Naming.rebind("serverProc", obj); catch (final Exception e) { System.out.println(e.getMessage());

Client Lookup des Server-Objektes und Erhalten des Stubs, der das Server-Interface implementiert Danach Methodenaufrufe auf Stub-Objekt z.b.: try { ServerInterface stub = (ServerInterface) Naming.lookup("//pc18/serverProc"); Hat die Form: //{hostname ipaddress [:port]/objectname (anderes Bsp.: //pc18.pool.ifis.uni-luebeck.de:1099/serverproc) System.out.println("Receiving text " + stub.transmitbinding(bindings.createnewinstance())); catch (final Exception e) { System.out.println(e.getMessage());

Callbacks Bis jetzt: Client ruft Methode eines Server-Objektes auf Server ruft Methode auf einen Client auf => Callbacks Dazu Übergabe eines Remote Objektes vom Client an den Server

Beispiel RMI-Clients Remote- Interface Color RMI-Server nextcolor Stub Skeleton (ColorChecker) Remote- Objekt Remote- Objekt ColorChecker Skeleton doneit (color) Stub Netzwerk Remote- Interface Notify

Remote Interfaces Für Server-Objekt: public interface Color extends Remote { public void nextcolor(notify n) throws RemoteException; Für Client und Callback-Methode: public interface Notify extends Remote { public void doneit(string color) throws RemoteException;

Server public class Main extends UnicastRemoteObject implements Color { DoColor docolor; public Main() throws RemoteException { public void nextcolor(notify n) throws RemoteException { docolor = new DoColor(n); docolor.start(); public static void main(string[] args) { try { Main server = new Main(); final Registry reg = LocateRegistry.createRegistry(Registry.REGISTRY_PORT); Naming.rebind("COLOR", server); catch (java.net.malformedurlexception e) {System.out.println(e); catch (RemoteException e) {System.out.println(e);

Thread auf Server class DoColor extends Thread { private static String colors[]={"red","green","blue","orange","white"; private static int index = 0; private Notify notify; private static ReentrantLock lock=new ReentrantLock(); public DoColor(Notify n) { notify = n; public void run() { try { lock.lock(); int i=0; try { index= (index + 1) % colors.length; i=index; finally{ lock.unlock(); Thread.sleep(3000); // simulating a lot of CPU work notify.doneit(colors[i]); catch(exception e) { System.out.println(e); ;

Client public class ColorClient extends javax.swing.jframe { private javax.swing.jtextfield colorlabel; private javax.swing.jbutton getcolor; private Color color; private ColorChecker notifycolor; public ColorClient() { initcomponents(); try { Remote remoteobject = Naming.lookup("COLOR"); color = (Color) remoteobject ; notifycolor = new ColorChecker(colorLabel); catch(exception e){ System.out.println(e); ; public static void main(string args[]) { new ColorClient().setVisible(true); private void initcomponents() { getcolor = new javax.swing.jbutton(); colorlabel=new javax.swing.jtextfield(); setdefaultcloseoperation( javax.swing.windowconstants.exit_o N_CLOSE); getcolor.settext("getcolor"); getcolor.addactionlistener(new java.awt.event.actionlistener() { public void actionperformed( java.awt.event.actionevent evt) { try { colorlabel.settext( "waiting for color..."); color.nextcolor(notifycolor); catch(exception e) { System.out.println(e); ); getcontentpane().add(getcolor, java.awt.borderlayout.center); getcontentpane().add(colorlabel, java.awt.borderlayout.south); pack();

ColorChecker Remote Objekt auf dem Client public class ColorChecker extends UnicastRemoteObject implements Notify { private javax.swing.jtextfield textfield; public ColorChecker(javax.swing.JTextField tf) throws RemoteException { textfield = tf; public void doneit(string color) { try { textfield.settext(color); catch(exception e){ System.out.println(e);