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

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

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

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

Systemy Rozproszone - Ćwiczenie 6

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

Tworzenia aplikacji rozproszonej RMI

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

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

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

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

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

1 Atrybuty i metody klasowe

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

Programowanie obiektowe

Wykład 7: Pakiety i Interfejsy

Programowanie współbieżne i rozproszone

Zastosowanie informatyki w gospodarce Wykład 3

Programowanie obiektowe

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

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

Aplikacja wielow tkowa prosty komunikator

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Programowanie w Internecie. Java

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

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

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

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

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

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

Przykłady interfejsu TCP i UDP w Javie

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

Programowanie obiektowe

Klasy abstrakcyjne i interfejsy

Programowanie obiektowe

Kurs WWW. Paweł Rajba.

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

Middleware wprowadzenie października 2010

Polimorfizm. dr Jarosław Skaruz

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

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

Middleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1

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

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

Klasy abstrakcyjne, interfejsy i polimorfizm

Programowanie obiektowe

Tworzenie i wykorzystanie usług

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

Pakiety i interfejsy. Tomasz Borzyszkowski

Multimedia JAVA. Historia

Programowanie obiektowe

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

WYJĄTKI. Jest ona jednak czasochłonna i prowadzi do duŝego zapotrzebowania na zasoby systemu.

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

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

Dokumentacja do API Javy.

Diagramy klas. dr Jarosław Skaruz

Programowanie obiektowe

Ł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:

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

Dawid Gierszewski Adam Hanasko

Transkrypt:

Zdalne wywołanie metod - koncepcja Oprogramowanie systemów równoległych i rozproszonych Wykład 7 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). Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. 1/21 Odniesienie do obiektu Rodzaje obiektów 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. 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.. 3/21

Wywołania statyczne i dynamiczne Java - RMI 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) 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.. 5/21 Model przepływu danych Definicja interfejsu w RMI 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ć klauzula throws możliwość rzucenia wyjatku java.rmi.remoteexception.. 7/21

Komunikacja pomiędzy klientem i serwerem RMI - przekazywanie parametrów (I) 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?. 9/21. RMI - prezkazywanie parametrów (II) RMI - prezkazywanie parametrów (III) Przekazywanie przez wartość/kopię (ang. pass-by-value/copy) Przekazywanie przez odniesienie (ang. pass-by-reference). 11/21.

rmiregistry Obsługa obiektów - klasa Naming 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. Do obsługi rejestracji w rmiregistry służa statyczne metody klasy java.rmi.naming: lookup() - zwraca obiekt zdalny zwiazany z podana nazwa, bind() - wiaże obiekt zdalny z podana nazwa - jeśli podana nazwa już występuje zwracany jest wyjatek klasy AlreadyBoundException, rebind() - wiaż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).. 13/21. Implementacja klasy serwera Bezpieczeństwo RMI 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. 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; ;. 15/21.

Przykład - Definicja interfejsu Przykład - klasa serwera import java.rmi.*; public interface MojInterfejs extends Remote public Double zdalnametoda(int i) throws RemoteException; // inne zdalne funkcje... 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).... 17/21. Przykład - klasa klienta Przyklad - kompilacja 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)... 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. 19/21.

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