Client/Server-Programmierung



Ähnliche Dokumente
Client/Server-Programmierung

Remote Method Invocation

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Mobile und Verteilte Datenbanken

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

Java-Programmierung. Remote Method Invocation - RMI

Mobile und Verteilte Datenbanken

Remote Method Invocation

Remote Method Invocation

Client/Server-Programmierung. CORBA: Schritt-für-Schritt Anleitung (Mini HOWTO)

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

Client/Server-Programmierung

Java RMI Remote Method Invocation

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

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

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

Java Remote Method Invocation (RMI)

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

-Testen verteilter Anwendungen

Der lokale und verteilte Fall

Konzepte von Betriebssystem-Komponenten Middleware RMI

Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06

Modul Software Komponenten 10 Komponentenarchitektur

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

Remote Methode Invocation (RMI) ETIS SS05

8.1.5 Java RMI Remote Method Invocation

Einführung: Verteilte Systeme - Remote Method Invocation -

Client/Server-Programmierung WS2007/08. EJB/JSP: Schritt-für-Schritt Anleitung

Warum EJB Technologie (1)?

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

Client/Server-Programmierung

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

Remote Method Invocation (RMI)

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

RMI. Wir haben. Komponenten auf einem Rechner. Remote Method Invocation

Klausur: Java (Liste P)

Übungen zu Softwaretechnik

CORBA. Systemprogrammierung WS

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

Middleware. im Schweinsgalopp

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

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

Kommunikation. Björn und Georg

JAVA Remote Method Invocation RMI/IIOP Tutorial

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

Verteilte Systeme: Entfernte Methodenaufrufe

Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 30. März 2006

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

CORBA Implementierung von Client und Server

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

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

3 Objektorientierte Konzepte in Java

Middleware. Einführung in CORBA. Middlewareplattform CORBA. CORBA: Eigenschaften

10.1 Remote Method Invocation (RMI)

RMI Server und Client

Java: Vererbung. Teil 3: super()

Verteiltes Rechnen. Verteilte Dienste mit Java Remote Method Invocation (RMI). Prof. Dr. Nikolaus Wulff

Überblick. Netzprogrammierung 3. Verteilte Objekte in Java RMI. Verteilte Objekte

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

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

Transkript:

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 Systeme Client/Server-Programmierung (1/15) i

Client/Server-Programmierung WS 2014/2015 4 RMI / IIOP Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 181

Inhalt RMI über IIOP Farley, Crawford, Flanagan: S. 88ff, Kap. 7 http://java.sun.com/j2se/1.5.0/docs/guide/rmi-iiop Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 182

RMI über IIOP Ziel: Verbindung von Java-RMI Objekten mit nicht-java (CORBA) Objekten Vorgehensweise: RMI nutzt CORBA IIOP-Protokoll zur Kommunikation zwischen Objekten Damit: Java-Client kann CORBA Objekt über RMI nutzen CORBA-Client kann RMI-Objekt über CORBA nutzen Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 183

Vorgehen zur Nutzung von RMI/IIOP Basisklasse: Remote-Objekte müssen von javax.rmi.portableremoteobject erben statt von java.rmi.server.unicastremoteobject RMI Compiler: Stubs und Skeletons müssen über rmic -iiop erzeugt werden Option -idl erzeugt zusätzlich OMG IDL Datei Namensdienst: statt RMI Registry muß JNDI benutzt werden, um auf CORBA-Namensdienst zuzugreifen Downcast: vom Namensdienst erhaltene Objektreferenzen müssen über PortableRemoteObject.narrow() in gültige Referenzen umgewandelt werden Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 184

Beispiel: Gemischtes Hello World Server mit RMI realisiert Schnittstelle: import java.rmi.remote; import java.rmi.remoteexception; public interface Hello extends Remote { String sayhello(string to) throws RemoteException; Client wahlweise mit RMI oder CORBA Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 185

Server-Code import javax.naming.*; import java.rmi.*; import java.util.*; import javax.rmi.portableremoteobject; public class HelloServer extends PortableRemoteObject implements Hello { public HelloServer() throws RemoteException { super(); public String sayhello(string to) { System.out.println("Hello-Server called"); return "Hello World to " + to + "!"; Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 186

Server-Code... public static void main(string args[]) { try { // Server Objekt erzeugen HelloServer obj = new HelloServer(); // Referenz über JNDI beim Namensdienst registrieren Properties props = new Properties(); props.put("java.naming.factory.initial", "com.sun.jndi.cosnaming.cnctxfactory"); props.put("java.naming.provider.url", "iiop://bspc02:5555"); Context ctx = new InitialContext(props); ctx.rebind("helloworld", obj); catch (Exception e) {... Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 187

RMI Client public static void main(string args[]) { try { // Obektreferenz über JNDI vom Namensdienst besorgen Properties props = new Properties(); props.put(context.initial_context_factory, "com.sun.jndi.cosnaming.cnctxfactory"); props.put(context.provider_url, "iiop://bspc02:5555"); Context ctx = new InitialContext(props); Hello obj = (Hello) PortableRemoteObject.narrow(ctx.lookup("HelloWorld"), Hello.class); // Remote Methode aufrufen System.out.println(obj.sayHello("Roland")); catch (Exception e) {... Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 188

CORBA Client public static void main(string args[]) { try{ // ORB erzeugen und initialisieren ORB orb = ORB.init(args, null); // Root naming context holen org.omg.corba.object ns = orb.resolve_initial_references("nameservice"); NamingContextExt ncref = NamingContextExtHelper.narrow(ns); // Objektreferenz vom Namensdienst besorgen NameComponent path[] = ncref.to_name("helloworld"); Hello helloref = HelloHelper.narrow(ncRef.resolve(path)); System.out.println(helloRef.sayHello("Peter")); catch(exception e) {... Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 189

Code-Erzeugung mit RMI-Server / CORBA-Client Client Seite Server Seite _HelloStub.java Hello.java HelloServer.java HelloHolder.java HelloHelper.java Hello.java idlj javac Hello.class HelloServer.class HelloOperations.java rmic iiop idl HelloClient.java javac Hello.idl _Hello_Stub.class HelloClient.class... _HelloServer_Tie.class Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 190