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



Podobne dokumenty
Remote Method Invocation 17 listopada 2010

Podejście obiektowe do budowy systemów rozproszonych

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

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Wywoływanie metod zdalnych

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ć

Wywoływanie metod zdalnych

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

Aplikacje RMI

Aplikacje RMI Lab4

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

Programowanie rozproszone w języku Java

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

Systemy Rozproszone - Ćwiczenie 6

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

14. Komunikacja rozproszona gniazdka, RMI

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

Tworzenia aplikacji rozproszonej RMI

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

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

Programowanie obiektowe

Tworzenie i wykorzystanie usług

Java programowanie w sieci. java.net RMI

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

Programowanie obiektowe

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

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

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

Programowanie obiektowe

Programowanie obiektowe

1 Atrybuty i metody klasowe

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

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

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

Dokumentacja do API Javy.

Programowanie obiektowe

Wykład 7: Pakiety i Interfejsy

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

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

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

Aplikacje w środowisku Java

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

Polimorfizm. dr Jarosław Skaruz

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

Java. Programowanie Obiektowe Mateusz Cicheński

Polimorfizm, metody wirtualne i klasy abstrakcyjne

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);

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

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

Aplikacja wielowątkowa prosty komunikator

Java: interfejsy i klasy wewnętrzne

Aplikacje biznesowe Wykład dla studentów Informatyki Stosowanej

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

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.

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

Programowanie w Internecie. Java

Enkapsulacja, dziedziczenie, polimorfizm

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

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Programowanie obiektowe

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

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

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

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

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

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

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

Projektowanie algorytmów rekurencyjnych

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

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

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Komponenty sterowane komunikatami

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

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

Multimedia JAVA. Historia

Git, Bitbucket, IntelliJ IDEA

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

Programowanie obiektowe

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Michał Jankowski. Remoting w.net 2.0

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

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

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

Java Platform Micro Edition

Metody Metody, parametry, zwracanie wartości

Aplikacje internetowe i rozproszone - laboratorium

Zaawansowane aplikacje WWW - laboratorium

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

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

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

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

Transkrypt:

Obiektowe programowanie rozproszone Java RMI Krzysztof Banaś Systemy rozproszone 1

Java RMI Mechanizm zdalnego wywołania metod Javy (RMI Remote Method Invocation) posiada kilka charakterystycznych cech, m.in.: różną semantykę przesyłania obiektów, zależnie od ich rodzaju przesyłanie przez wartość dla obiektów lokalnych przesyłanie przez referencję dla obiektów zdalnych zdolność do pobierania kodu z odległych lokalizacji dzięki: przenośności kodu wykonywalnego Javy możliwościom maszyn wirtualnych Javy Krzysztof Banaś Systemy rozproszone 2

Java RMI Tworzenie rozproszonego obiektowego programu Javy składa się z podobnych kroków jak w przypadku innych środowisk RPC: definicja interfejsu tworzenie programu serwera implementującego realizację usług zdefiniowanych w interfejsie tworzenie programu klienta korzystającego z usług zdefiniowanych w interfejsie uruchomienie programu serwera uruchomienie programu klienta Krzysztof Banaś Systemy rozproszone 3

Java RMI Uruchomienie zdalnej usługi RMI wiąże się z dodatkowymi krokami, poza samym uruchomieniem programu serwera należy uprzednio uruchomić program rejestru RMI (rmiregistry), za pomocą którego program serwera dokonuje rejestracji utworzonego obiektu realizującego zdalny interfejs, a program klienta uzyskuje zdalną referencję do tego obiektu jeśli zachodzi taka potrzeba należy udostępnić kod klas, który będzie przesyłany pomiędzy maszynami wirtualnymi Javy, w tym kod skompilowanego zdalnego interfejsu Krzysztof Banaś Systemy rozproszone 4

Java RMI Krzysztof Banaś Systemy rozproszone 5

Przykład interfejs RMI package compute; import java.rmi.remote; import java.rmi.remoteexception; public interface Compute extends Remote { <T> T executetask(task<t> t) throws RemoteException; Krzysztof Banaś Systemy rozproszone 6

Przykład Interfejs Compute zakłada, że zdalne obiekty implementujące go będą realizowały procedurę executetask, przy czym obiekt zadania zostanie przesłany jako argument procedury Ażeby umożliwić takie działanie definicja interfejsu Task (implementowanego przez obiekt zadania) także musi być dostępna wraz z definicją interfejsu Compute: package compute; public interface Task<T> { T execute(); Krzysztof Banaś Systemy rozproszone 7

Przykład serwer RMI package engine; import java.rmi.remoteexception; import java.rmi.registry.locateregistry; import java.rmi.registry.registry; import java.rmi.server.unicastremoteobject; import compute.compute; import compute.task; public class ComputeEngine implements Compute { public ComputeEngine() { super(); public <T> T executetask(task<t> t) { return t.execute(); /* procedura main */ Krzysztof Banaś Systemy rozproszone 8

Przykład serwer RMI public static void main(string[] args) { if (System.getSecurityManager() == null) { System.setSecurityManager(new SecurityManager()); try { String name = "Compute"; Compute engine = new ComputeEngine(); Compute stub = (Compute) UnicastRemoteObject.exportObject(engine, 0); Registry registry = LocateRegistry.getRegistry(); registry.rebind(name, stub); System.out.println("ComputeEngine bound"); catch (Exception e) { System.err.println("ComputeEngine exception:"); e.printstacktrace(); Krzysztof Banaś Systemy rozproszone 9

Przykład definicja klasy implementującej package client; import compute.task; import java.io.serializable; import java.math.bigdecimal; public class Pi implements Task<BigDecimal>, Serializable { private static final long serialversionuid = 227L; private final int digits; public Pi(int digits) { this.digits = digits; public BigDecimal execute() { return computepi(digits); /** Kod obliczenia Pi definicja funkcji computepi */ Krzysztof Banaś Systemy rozproszone 10

Przykład program klienta package client; import java.rmi.registry.locateregistry; import java.rmi.registry.registry; import java.math.bigdecimal; import compute.compute; public class ComputePi { public static void main(string args[]) { if (System.getSecurityManager() == null) { System.setSecurityManager(new SecurityManager()); try { String name = "Compute"; Registry registry = LocateRegistry.getRegistry(args[0]); Compute comp = (Compute) registry.lookup(name); Pi task = new Pi(Integer.parseInt(args[1])); BigDecimal pi = comp.executetask(task); System.out.println(pi); catch (Exception e) { System.err.println("ComputePi exception:"); e.printstacktrace(); Krzysztof Banaś Systemy rozproszone 11

Przykład uruchomienie kodu System serwera: uruchomienie programu rmiregistry uruchomienie programu serwera informacja o miejscu przechowania klas serwera adres internetowy systemu, w ramach którego funkcjonują obiekty serwera pliki zawierające definicje strategii zapewniania bezpieczeństwa System klienta uruchomienie programu klienta informacja o miejscu przechowywania potrzebnych klas klienta pliki zawierające definicje strategii zapewniania bezpieczeństwa adres internetowy serwera (jeśli nie jest dostarczony inaczej) Krzysztof Banaś Systemy rozproszone 12