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

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

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych

Remote Method Invocation 17 listopada 2010

Podejście obiektowe do budowy systemów rozproszonych

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Remote Method Invocation 17 listopada rozproszonych. 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ć

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

Aplikacje RMI

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

Aplikacje RMI Lab4

Systemy Rozproszone - Ćwiczenie 6

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

Tworzenia aplikacji rozproszonej RMI

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

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

Programowanie rozproszone w języku Java

Remote Method Invocation

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

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

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

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

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

Programowanie obiektowe

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

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

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

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

Wprowadzenie. Dariusz Wawrzyniak 1

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Wykład 4: Klasy i Metody

Aplikacja wielowątkowa prosty komunikator

1 Atrybuty i metody klasowe

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe

Programowanie obiektowe

Wykład 7: Pakiety i Interfejsy

Programowanie współbieżne i rozproszone

Aplikacja wielow tkowa prosty komunikator

Zastosowanie informatyki w gospodarce Wykład 3

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

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Programowanie w Internecie. Java

Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.

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

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

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

Przykłady interfejsu TCP i UDP w Javie

Klasy abstrakcyjne i interfejsy

Programowanie obiektowe

Programowanie obiektowe

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

Kurs WWW. Paweł Rajba.

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

Middleware wprowadzenie października 2010

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

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

Polimorfizm. dr Jarosław Skaruz

Wykład 8: Obsługa Wyjątków

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Middleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1

Programowanie obiektowe

Prototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp.

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Tworzenie i wykorzystanie usług

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Programowanie obiektowe

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

Pakiety i interfejsy. Tomasz Borzyszkowski

Multimedia JAVA. Historia

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

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

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

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

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

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wykład 6: Dziedziczenie

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

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

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

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Programowanie obiektowe

Dokumentacja do API Javy.

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

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

Klasy abstrakcyjne, interfejsy i polimorfizm

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Programowanie obiektowe

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Bezpieczne uruchamianie apletów wg

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Transkrypt:

Wykład 7 p. 1/2 Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska

Zdalne wywołanie metod - koncepcja Wykład 7 p. 2/2 RMI (Remote Method Invocation) - obiektowe RPC, dostarcza klientowi interfejs do obiektu, implementacja obiektu jest ukryta przed klientem (implementacja obiektu może ulec zmianie pod warunkiem, że interfejs obiektu pozostaje bez zmian).

Wykład 7 p. 3/2 Odniesienie do obiektu Odniesienie obiektowe (ang. object reference) - globalny w skali systemu adres obiektu, odniesienie może być przekazywane pomiędzy procesami pracujacymi na różnych maszynach, wnętrze odniesienia jest zazwyczaj ukryte przed procesem, problemy implementacyjne: jak zabezpieczyć odniesienie przed unieważnieniem z powodu awarii serwera? jaka informacja powinna być zaszyta w odniesieniu. rozwiazania: rejestr obiektów, serwer lokalizacji.

Rodzaje obiektów Wykład 7 p. 4/2 Implementacja obiektu: obiektowa - realizowana przez obiekty języka programowania, nieobiektowa - jest wymagany adapter obiektu. Trwałość obiektów: obiekty trwałe (ang. persistemt) - sa niezależne od serwera i moga przetrwać jego awarię, obiekty nietrwałe (ang. transient) - istnieja tak długo jak działa serwer.

Wykład 7 p. 5/2 Wywołania statyczne i dynamiczne Wywołania statyczne: z pomoca statycznego pieńka. Wywołania dynamiczne: bez statycznej wiedzy o obiekcie, przykładowe zastosowanie - przegladarka obiektów. Ogólna postać wywołania dynamicznego: invoke(obiekt, metoda, argumenty_wejściowe, argumenty_wyjściowe) np. dla wywołania MojObiekt.MojaMetoda(i): invoke(mojobiekt, ID(MojaMetoda), i, NULL)

Wykład 7 p. 6/2 Java - RMI RMI to podstawowy mechanizm typu RPC dostępny w języku Java. W przeciwieństwie do Sun RPC jest mechanizmem w pełni obiektowym i nowoczesnym. W przeciwieństwie do RPC nie wprowadza żadnych nowych elementów wykraczajacych poza sam język. Językiem specyfikacji interfejsu jest sama Java. RMI zostało właczone do JDK w wersji 1.1. Zdalny obiekt w całości znajduje się na jednej maszynie.

Model przepływu danych Wykład 7 p. 7/2

Definicja interfejsu w RMI Wykład 7 p. 8/2 Intefejs zdalny w RMI jest po prostu interfejsem języka Java. Każdy interfejs zdalny musi spełniać następujace warunki: musi rozszrzać interfejs java.rmi.remote, wszystkie jego metody musza deklarować klauzul możliwość rzucenia wyj a throws atku java.rmi.remoteexception.

Komunikacja pomiędzy klientem i serwerem Wykład 7 p. 9/2

RMI - przekazywanie parametrów (I) Wykład 7 p. 10/2 public class MojSerwer extends UnicastRemoteObject implements Remote { public Double zdalnametoda(object p) throws RemoteException { p.innametoda(); } } W jaki sposób jest przekazywany parametr p będacy obiektem?

RMI - prezkazywanie parametrów (II) Wykład 7 p. 11/2 Przekazywanie przez wartość/kopię (ang. pass-by-value/copy)

RMI - prezkazywanie parametrów (III) Wykład 7 p. 12/2 Przekazywanie przez odniesienie (ang. pass-by-reference)

rmiregistry Wykład 7 p. 13/2 Do nawiazania łaczności pomiędzy klientem a serwerem służy rejestr serwerów (rmiregistry). Realizuje on wyszukiwanie obiektów na podstawie ich nazwy. Nazwa obiektu przyjmuje format URL //host:port/nazwa, gdzie: host - nazwa lub adres komputera gdzie uruchomiony jest rejestr, port - numer portu (domyślnie 1099), nazwa - nazwa przyjęta dla obiektu zdalnego w rejestrze.

Obsługa obiektów - klasa Naming Wykład 7 p. 14/2 Do obsługi rejestracji w rmiregistry służa statyczne metody klasy java.rmi.naming: lookup() - zwraca obiekt zdalny zwiazany z podana nazwa, bind() - wi aże obiekt zdalny z podana nazwa - jeśli podana nazwa już występuje zwracany jest wyjatek klasy AlreadyBoundException, rebind() - wi aże obiekt zdalny z podana nazwa - jeśli podana nazwa już występuje przypisany do niej obiekty jest zastępowany nowym, unbind() - usuwa powiazane nazwy z obiektem zdalnym w rejestrze, list() - zwraca listę nazw obiektów występujacych w rejestrze (lista obiektów typu String).

Implementacja klasy serwera Wykład 7 p. 15/2 Aby metody obiektu mogły być zdalnie dostępne, musi on spełniać dwa warunki: implementować jakiś interfejs zdalny, być wyeksportowany. Eksport obiektu oznacza otwarcie odpowiedniego portu i rozpoczęcie nasłuchu. Najprościej uzyskać ten efekt dziedziczac z którejś z podklas klasy java.rmi.server.remoteserver, np: java.rmi.server.unicastremoteobject - dla niezwielokrotnionych nietrwałych obiektów, java.rmi.server.activatable - dla obiektów trwałych.

Bezpieczeństwo RMI Wykład 7 p. 16/2 Niektóre operacje wymagaja jawnego wskazania, że moga zostać wykonane, np ładowanie kodu z zewnatrz. Program Java może utworzyć zarzadce bezpieczeństwa (ang. Security manager), który ustala politykę bezpieczeństwa (ang. Security policy). W języku Java można w tym celu użyć specjalnej klasy RMISecurityManager. Do zdefiniowania zasad bezpieczeństwa można użyć obiektu klasy Policy lub pliku konfiguracyjnego security.policy, np: grant { permission java.security.allpermission; };

Przykład - Definicja interfejsu Wykład 7 p. 17/2 import java.rmi.*; public interface MojInterfejs extends Remote { public Double zdalnametoda(int i) throws RemoteException; } // inne zdalne funkcje...

Przykład - klasa serwera Wykład 7 p. 18/2 import java.rmi.*; import java.rmi.server.*; import java.net.*; public class MojSerwer extends UnicastRemoteObject implements MojInterfejs { public MojSerwer() throws RemoteException {... } public Double zdalnametoda(int i) throws RemoteException {... } } public static void main(string []t) { try { MojSerwer ob = new MojSerwer(); Naming.rebind("MojInterfejs", ob); } catch (RemoteException re) {... } catch (MalformedURLException ue){... }

Przykład - klasa klienta Wykład 7 p. 19/2 import java.rmi.*; public class MojKlient { public static void main(string args[]) { if (System.getSecurityManager() == null) System.setSecurityManager(new RMISecurityManager()); try { MojInterfejs s =(MojInterfejs)Naming.lookup("rmi://localhost/MojInterfejs");... } catch (Exception e){... } } }

Przyklad - kompilacja Wykład 7 p. 20/2 javac MojInterfejs.java wynik: MojInterfejs.class javac MojSerwer.java wynik: MojSerwer.class javac MojKlient.java wynik: MojKlient.class rmic MojSerwer wynik: MojSerwer_Stub.class, MojSerwer_Skel.class

Wykład 7 p. 21/2 Przykład - uruchomienie Uruchomienie rejestru serwerów: rmiregistry Uruchomienie serwera: java MojSerwer Uruchomienie klienta: java -Djava.security.policy=dostep.policy MojKlient