Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Podobne dokumenty
Remote Method Invocation 17 listopada 2010

Podejście obiektowe do budowy systemów rozproszonych

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Aplikacje RMI

Aplikacje RMI Lab4

Interfejsy w Javie. Przykład zastosowania interfejsów:

Tworzenia aplikacji rozproszonej RMI

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1

Systemy Rozproszone - Ćwiczenie 6

Remote Method Invocation

RMI-2. Java Remote Method Invocation (RMI) na podstawie m.in. podręcznika firmy Sun Microsystems SYSTEMY ROZPROSZONE

sieć 4) Mechanizm RMI jest zazwyczaj wykorzystywany w rozwiązaniach typu klient-serwer.

Programowanie rozproszone w języku Java

Systemy rozproszone. Dr inż. L. Miękina. Department of Robotics and Mechatronics AGH University of Science and Technology 1/1

Java programowanie w sieci. java.net RMI

Middleware wprowadzenie października Dariusz Wawrzyniak. Instytut Informatyki ul. Piotrowo 2 (CW, pok. 5)

Programowanie obiektowe

Rozproszone systemy internetowe. Wprowadzenie. Koncepcja zdalnego wywołania procedury

Aplikacja wielowątkowa prosty komunikator

14. Komunikacja rozproszona gniazdka, RMI

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

Wprowadzenie. Dariusz Wawrzyniak 1

Tworzenie i wykorzystanie usług

Interfejs IUnknown. Każdy obiekt COM musi implementować interfejs IUnknown, który zawiera trzy metody:

Współbieżność w środowisku Java

Programowanie obiektowe

Aplikacja wielow tkowa prosty komunikator

Middleware wprowadzenie października 2010

Middleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1

Programowanie obiektowe

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Aplikacje w środowisku Java

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

1. Co można powiedzieć o poniższym kodzie?

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Technologie internetowe laboratorium nr 4. Instalacja i uruchomienie usługi sieciowej w serwerze Tomcat/AXIS

1 Atrybuty i metody klasowe

Wykład 4: Klasy i Metody

Programowanie współbieżne i rozproszone

Dokumentacja do API Javy.

Aplikacje biznesowe Wykład dla studentów Informatyki Stosowanej

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Java JMX. Marcin Werla. Monitorowanie i zarządzanie usługami sieciowymi w Javie. mwerla@man.poznan.pl PCSS/Poznań JUG

Wykład 7: Pakiety i Interfejsy

public - może być używana w kodzie poza klasą, jedna klasa ModyfikatorKlasy może być kombinacją wyrażeń:

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Języki i metody programowania Java. Wykład 2 (część 2)

Systemy Rozproszone Technologia ICE

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Aplikacje internetowe i rozproszone - laboratorium

PRiR I. Programowanie Równoległe i Rozproszone. Wykład 1 Wstęp i RMI. Marek Kasztelnik WSZIB Krakow

1. Co można powiedzieć o poniższym kodzie (zakładając, że zaimportowano wszystkie niezbędne klasy)?

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Enterprise JavaBeans

1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();

AXIS2 - tworzenie usługi sieciowej i klienta Axis Data Binding. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Usługa TimerService

public interface TravelAgent { public void makereservation(int cruiseid, int cabinid, int customerid, double price); }

Java, bazy danych i SSL

Zastosowanie informatyki w gospodarce Wykład 3

Java: interfejsy i klasy wewnętrzne

Łukasz Przywarty Wrocław, r. Grupa: WT/N 11:15-14:00. Sprawozdanie z zajęć laboratoryjnych: OpenSSL - API

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Programowane refleksyjne i serializacja

Aplikacje w środowisku Java

Programowanie obiektowe

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

AKADEMIA GÓRNICZO-HUTNICZA Wydział Elektrotechniki, Automatyki, Elektroniki i Informatyki

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Programowanie obiektowe

Programowanie obiektowe

1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4);

Przykłady interfejsu TCP i UDP w Javie

Michał Jankowski. Remoting w.net 2.0

Java. Programowanie Obiektowe Mateusz Cicheński

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Stanowe komponenty sesyjne

1. Co można powiedzieć o poniższym kodzie (zakładając, że znajduje się on w jednym pliku A.java)?

Transkrypt:

P d jś i bi kt d b d t ó Podejście obiektowe do budowy systemów rozproszonych Dariusz Wawrzyniak (IIPP) 1

interfejs (w języku Java),wywiedziony idi z Remote obie kt aplikacja klie ncka interfe js serw er stub szkie let sie ć Dariusz Wawrzyniak (IIPP) 2

Mechanizm RMI umożliwia tworzenie obiektów zdalnych (brak bezpośredniego wsparcie dla tworzenia obiektów rozporszonych) Jedyna forma zdalnego dostępu polega na wywoływaniu metod wyspecyfikowanych w interfejsie wywiedzionym (dziedziczącym) java.rmi.remote Interfejs zdefiniowany jest w języku implementacji Obiekt może implementować wiele interfejsów Ten sam interfejs może być implementowany przez wiele obiektów Interfejs traktowany jest jak typ danych Dariusz Wawrzyniak (IIPP) 3

Informacja o typie obiektu (czyli o zdalnym interfejsie) dostępna jest w czasie kompilacji. Wiązanie obiektu jest jawne i odbywa się w czasie wykonania Trwałość obiektu obiekt udostępniany przez UnicastRemoteObject ma charakter przejściowy (istnieje tylko w czasie działania serwera) dostępny jest mechanizm obiektów aktywowalnych, ale brak bezpośredniego wsparcia dla utrwalania stanu obiektu Dariusz Wawrzyniak (IIPP) 4

Obiekty mogą być przekazywane przez wartość (kopię) konieczna jest deklaracja implementacji interfejsu java.io.serializable w klasie obiektu. Obiekty zdalne (implementujące interfejs Remote) przekazywane są przez referencję do zdalnej metody przekazywana jest zdalna referencja, za którą udostępniany jest proxy (stub). Brak bezpośredniego wsparcia dla przekazywania parametrów przez kopiowanie i odtwarzanie. Dariusz Wawrzyniak (IIPP) 5

Klient Serwer Obiekt Obiekt class... implements java.io.serializable i { } Dariusz Wawrzyniak (IIPP) 6

Klient Serwer Obiekt method invocation Proxy class... implements java.rmi.remote { ( ) throws java.rmi.remoteexception { } } Dariusz Wawrzyniak (IIPP) 7

Klient Serwer Obiekt Obiekt Dariusz Wawrzyniak (IIPP) 8

klie nt serw er stub (pr oxy) szkielet obs ługareferencji tr ans por t RMI TCP/IP Dariusz Wawrzyniak (IIPP) 9

java.rmi.remoteobject java.r mi.re ir mote Server java.r mi.remote ir java.r mi.unicas tre mote Obje ct spe cyfikacja interfe js u zdalnych me tod klas a zdalne go obie ktu Dariusz Wawrzyniak (IIPP) 10

1. Zdefiniowanie i implementacja odpowiednich klas (w szczególności klas dla obiektów dostępnych zdalnie) zdefiniowanie interfejsu pochodnego od Remote zdefiniowanie klasy wywiedzionej z klasy java.rmi.server.unicastremoteobject, implementującej interfejs pochodny od Remote lub użycie statycznej metody exportobject klasy UnicastRemoteObject 2. Kompilacja źródeł (javac, rmic) javac xxx.java xxx.class rmic xxx xxx_stub.class xxx_ Skel.class zbędne w Java 5 we wczesnych wersjach Javy Dariusz Wawrzyniak (IIPP) 11

3. Udostępnienie wygenerowanego kodu klas wspólny system plików kopia kodów klas w różnych systemach plików udostępnianie kodu przez serwer www 4. Uruchomienie aplikacji uruchomienie rmiregistry (name server) uruchomienie serwera: utworzenie zdalnych obiektów i ich rejestracja w rmiregistry uruchomienie klienta: zlokalizowanie zdalnych obiektów (odwołanie do rmiregistry) i wywoływanie y zdalnych metod Dariusz Wawrzyniak (IIPP) 12

Client side Client location Server side RMI Registry method invocation code transfer Server Remote Object registration Web Server Web Server Web Server Dariusz Wawrzyniak (IIPP) 13

Komunikacja pomiędzy serwerem (obiektem) a klientem jest określona przez definicję interfejsu pochodnego od interfejsu Remote. Klasa zdalnego obiektu musi implementować ten interfejs import java.rmi.remote; import java.rmi.remoteexception; public interface Compute extends Remote { Object executetask(task t) throws RemoteException; } Dariusz Wawrzyniak (IIPP) 14

Definicja klasy obiektu: import java.rmi.*; import java.rmi.server.*; import compute.*; public class ComputeEngine extends UnicastRemoteObject implements Compute { public ComputeEngine() throws RemoteException { super(); } public Object executetask(task t) { return t.execute(); } Dariusz Wawrzyniak (IIPP) 15

public static void main(string[] args) { if (System.getSecurityManager() == null) { System.setSecurityManager(new RMISecurityManager()); } String name = "//host:1099/compute"; try { Compute engine = new ComputeEngine(); Naming.rebind(name, engine); System.out.println("ComputeEngine ok"); } catch (Exception e) { System.err.println("ComputeEngine excep." + e.getmessage()); e.printstacktrace(); } }} Dariusz Wawrzyniak (IIPP) 16

import java.rmi.*; public class launchcomp { public static void main(string args[]) { if (System.getSecurityManager() == null){ System.setSecurityManager( new RMISecurityManager()); } try { String name = "//"+args[0]+"/compute"; Compute comp = (Compute) Naming.lookup(name); CompArea task = new CompArea(...); BigDecimal arae = (BigDecimal) (comp.executetask(task)); System.out.println(area); } catch (Exception e) {... } } } Dariusz Wawrzyniak (IIPP) 17

Jeżeli przekazujemy obiekt przez wartość, to klasa tego obiektu musi implementować interfejs Serializable. Jeśli przekazujemy obiekt przez referencja, to klasa tego obiektu musi implementować interfejs Remote. public interface Task extends } Object execute(); java.io.serializable { public class CompArea implements Task { } Dariusz Wawrzyniak (IIPP) 18

Rejestr wiąże z nazwami i udostępnia zdalne obiekty Tworzenie rejestru rmiregistry [<port number>] Klasa LocateRegistry t umożliwia i tworzenie rejestru (obiekty klasy Registry) Klasa Registry klasa obiektu-rejestru Klasa Naming ułatwia korzystanie z rejestru, umożliwiając jego specyfikację w adresie URL Dariusz Wawrzyniak (IIPP) 19

static Registry createregistry(int port) throws RemoteException static Registry createregistry(string host, int port) throws RemoteException static Registry getregistry(int port) throws RemoteException static Registry getregistry(string host, int port) throws RemoteException Dariusz Wawrzyniak (IIPP) 20

Compute void bind(string name, Remote obj) throws RemoteException, AlreadyBoundException, AccessException void rebind(string name, Remote obj) throws RemoteException, AccessException void unbind(string name) throws RemoteException, NotBoundException, AccessException String[] list() throws RemoteException, AccessException Remote lookup(string name) throws RemoteException, NotBoundException, AccessException Dariusz Wawrzyniak (IIPP) 21

static //host:1099/compute void bind(string urlname, Remote obj) throws RemoteException, AlreadyBoundException, d o AccessException, cept MalformedURLException, UnknownHostException static void rebind(string urlname, Remote obj) throws RemoteException, AccessException, MalformedURLException, UnknownHostException Dariusz Wawrzyniak (IIPP) 22

static void unbind(string urlname) throws RemoteException, NotBoundException, AccessException, MalformedURLException, UnknownHostException static String[] list() throws RemoteException, AccessException MalformedURLException, UnknownHostException static Remote lookup(string urlname) throws RemoteException, NotBoundException, AccessException, MalformedURLException Dariusz Wawrzyniak (IIPP) 23