Wywoływanie metod zdalnych

Podobne dokumenty
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

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

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ć

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

Wprowadzenie. Dariusz Wawrzyniak 1

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

Tworzenia aplikacji rozproszonej RMI

Middleware wprowadzenie października 2010

Middleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1

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

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

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

Remote Method Invocation

Systemy Rozproszone - Ćwiczenie 6

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

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

Java programowanie w sieci. java.net RMI

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

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

Programowanie współbieżne i rozproszone

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

Programowanie obiektowe

Tworzenie aplikacji rozproszonej w Sun RPC

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

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Aplikacja wielowątkowa prosty komunikator

Systemy Rozproszone Technologia ICE

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

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

Programowanie obiektowe

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

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

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

76.Struktura oprogramowania rozproszonego.

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

Programowanie obiektowe

Tworzenie i wykorzystanie usług

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

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

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

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

Aplikacje internetowe i rozproszone - laboratorium

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

14. Komunikacja rozproszona gniazdka, RMI

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

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

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

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

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

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

Programowanie obiektowe

Wywoływanie procedur zdalnych

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

Programowanie obiektowe

Programowanie komponentowe 5

Aplikacje w środowisku Java

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Wywoływanie procedur zdalnych

Aplikacja wielow tkowa prosty komunikator

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

Wykład 7: Pakiety i Interfejsy

Wykład 4: Klasy i Metody

1 Atrybuty i metody klasowe

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

Wywoływanie procedur zdalnych

Podstawy programowania obiektowego

Programowanie obiektowe

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.

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Dokumentacja do API Javy.

Enterprise JavaBeans

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

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

Aplikacje biznesowe Wykład dla studentów Informatyki Stosowanej

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003

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

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

Podstawy Programowania Obiektowego

Enterprise JavaBeans (EJB)

Rozdział 4 KLASY, OBIEKTY, METODY

Programowane refleksyjne i serializacja

Polimorfizm, metody wirtualne i klasy abstrakcyjne

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

JAX-RS czyli REST w Javie. Adam Kędziora

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

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

Michał Jankowski. Remoting w.net 2.0

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

Transkrypt:

Wywoływanie metod zdalnych Podejście obiektowe do budowy systemów rozproszonych Wywoływanie metod zdalnych model systemu obiekt aplikacja kliencka interfejs serwer proxy szkielet sieć Istota podejścia obiektowego Obiekt jest jednostką integrującą w sobie dane (stan obiektu) oraz odpowiednio zdefiniowane operacje (metody) Jedyna forma dostępu do danych polega na wywoływaniu metod wyspecyfikowanych w publicznym interfejsie obiektu Obiekt może implementować wiele interfejsów Ten sam interfejs może być implementowany przez wiele obiektów

Podejście obiektowe do budowy systemów rozproszonych Kluczowe dla mechanizmu wywoływania metod zdalnych jest oddzielenie definicji interfejsu (specyfikacji) od jego implementacji w obiekcie W językach definicji interfejsu (IDL) interfejs traktowany jest jak typ danych W języku implementacji każdy obiekt implementujący dany interfejs jest instancją tego typu Specyfikacja interfejsu Opis interfejsu w języku implementacji (np. Ada, Java RMI) Opis interfejsu w języku specjalnym, niezależnym od implementacji (CORBA IDL, Sun RPC rpcgen) Przykład opisu interfejsu w podejściu obiektowym (CORBA IDL) interface Konto { float stan(); float wplac(in float value); float pobierz(in float value); ; interface Bank { Konto otworzkonto(in int numer); float zamknijkonto(in Konto k); ;

Klasyfikacja obiektów ze względu na sposób implementacji Obiekt zdalny (ang. remote object) stan obiektu utrzymywany jest przez jeden serwer (wszystkie dane obiektu znajdują się na jednym serwerze) Obiekt rozproszony (ang. distributed object) stan obiektu przechowywany jest przez więcej niż jeden serwer (poszczególne serwery przechowują odpowiednie dane, stanowiące fragmenty tego samego obiektu) Z punktu widzenie klienta zarówno obiekt zdalny jak i obiekt rozproszony stanowi pewną całość odpowiednio identyfikowaną Klasyfikacja ze względu na dostępność informacji o obiektach Obiekt dostępny w czasie kompilacji (ang. compile-time object) informacja o obiekcie (jego typ) znana jest i dostępna w odpowiedniej formie w programie klienta na etapie tworzenia oprogramowania Obiekt dostępny w czasie wykonania (ang. runtime object) informacja o obiekcie dostępna jest dopiero w czasie działania aplikacji Klasyfikacja obiektu ze względu na trwałość Obiekt trwały (ang. persistent object) obiekt istnieje nawet wówczas, gdy nie ma serwera, w przestrzeni adresowej którego mógłby być przechowywany stan tego obiektu Obiekt przejściowy (ang. transient object) obiekt istnieje tak długo, jak długo działa serwer utrzymujący jego stan

Referencja do obiektu Referencja jest identyfikatorem, wykorzystywanym do wskazania obiektu, na którym ma zostać wykonana operacja W celu wywołania metody obiektu rezydującego na innej maszynie potrzebna jest zdalna referencja Referencja może być przekazywana jako parametr wywołania metody lub zwrócona jako wynik wykonania metody Implementacja zdalnej referencji Referencja jest wartością, której struktura wewnętrzna nie jest w żaden sposób interpretowana przez aplikację Zdalna referencja musi zawierać wystarczająco dużo informacji, żeby dowiązać obiekt w programie klienta Dowiązanie obiektu oznacza uzyskanie informacji, niezbędnej do wywołania metody obiektu (uzyskanie proxy) Dowiązanie obiektu Dowiązanie jawne (ang. explicit binding) dowiązanie wymaga wywołania odpowiedniej funkcji (np. bind), po którym może dopiero nastąpić wywołanie metody Dowiązanie domyślne (ang. implicit binding) wywołanie metody za pośrednictwem referencji skutkuje ustanowieniem dowiązanie do obiektu w procesie klienta

Wywoływanie metod Statyczne wywoływanie metod wywołanie metody za pośrednictwem proxy, wygenerowanego na podstawie definicji interfejsu Dynamiczne wywoływanie metod skomponowanie informacji niezbędnych do wywołania w czasie działania systemu, np.: invoke(ref_obj, id_metody, param_wej, param_wyj); Przekazywanie obiektów jako parametrów Przekazywanie przez wartość do zdalnej metody przekazywana jest kopia obiektu, który jest parametrem rzeczywistym wywołania. Przekazywanie przez referencję (zmienną) do zdalnej metody przekazywana jest referencja (zdalna) do obiektu, który jest parametrem rzeczywistym. Przekazywanie przez kopiowanie i odtwarzanie do zdalnej metody przekazywana jest kopia obiektu, a po zakończeniu zdalnej metody następuje aktualizacja obiektu po stronie wywołania, stosownie do zmian dokonanych w ramach wykonania metody. Przekazywanie przez wartość przykład w Java RMI Klient Serwer Obiekt Obiekt class... implements java.io.serializable {

Przekazywanie przez referencję przykład w Java RMI Klient Obiekt method invocation Serwer Proxy class... implements java.rmi.remote { ( ) throws java.rmi.remoteexception { Przekazywanie przez kopiowanie i odtwarzanie Klient Serwer Obiekt Obiekt Tworzenia aplikacji rozproszonej w środowisku Java RMI (1) 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 2. Kompilacja źródeł (javac, rmic) javac xxx.java xxx.class rmic xxx xxx_stub.class xxx_skel.class

Tworzenia aplikacji rozproszonej w środowisku Java RMI (1) 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 zdalnych metod Komunikacja między klientem a serwerem Client side location Client Server side RMI Registry method invocation code transfer registration Server Remote Object Web Server Web Server Web Server Interfejs java.rmi.remote 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;

Zdalne udostępnianie obiektu (serwer) 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(); Utworzenie i rejestracja zdalnego obiektu public 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(); Zdalne wywoływanie metod import java.rmi.*; public class launchcomp { public 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) {...

Przekazywanie parametrów 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 java.io.serializable { Object execute(); public class CompArea implements Task { Lokalizowanie zdalnych obiektów Rejestr wiąże z nazwami i udostępnia zdalne obiekty Tworzenie rejestru rmiregistry [<port number>] Klasa LocateRegistry umożliwia 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 Klasa LocateRegistry Registry createregistry(int port) throws RemoteException Registry createregistry(string host, int port) throws RemoteException Registry getregistry(int port) throws RemoteException Registry getregistry(string host, int port) throws RemoteException

Klasa Registry void bind(string name, Remote obj) throws RemoteException, AlreadyBoundException, AccessException void rebind(string name, Remote obj) throws RemoteException, AccessException void unbind(string name) Compute throws RemoteException, NotBoundException, AccessException String[] list() throws RemoteException, AccessException Remote lookup(string name) throws RemoteException, NotBoundException, AccessException Klasa Naming (1) void bind(string urlname, Remote obj) throws RemoteException, AlreadyBoundException, AccessException, MalformedURLException, UnknownHostException void rebind(string urlname, Remote obj) throws RemoteException, AccessException, MalformedURLException, UnknownHostException Klasa Naming (2) //host:1099/compute void unbind(string urlname) throws RemoteException, NotBoundException, AccessException, MalformedURLException, UnknownHostException String[] list() throws RemoteException, AccessException MalformedURLException, UnknownHostException Remote lookup(string urlname) throws RemoteException, NotBoundException, AccessException, MalformedURLException