PROVA FINALE Ingegneria del software

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "PROVA FINALE Ingegneria del software"

Transcript

1 PROVA FINALE Ingegneria del software Ing. Jody Marca Laboratorio N 6

2 Cosa faremo oggi 2 Comunicazione RMI Comunicazione RMI Multi-Thread

3 Remote Method Invocation 3 L obiettivo è di permettere ad una applicazione in esecuzione su una macchina locale di invocare i metodi di un oggetto in esecuzione su un altro computer remoto. Si definisce client il programma chiamante che ottiene un riferimento all oggetto remoto, server il programma che crea gli oggetti remoti. Tali applicazioni sono anche denominate distributed object application

4 RMI Schema di funzionamento 4 Client lookup invoke rmiregistry Server bind Stub Skeleton Remote Reference Layer (RRL) Transport Network Transport

5 Interfaccia remota 5 public class MyRemoteInterface extends Remote { public [parametro] remotecall([parametri]) throws RemoteException; Ogni interfaccia remota deve: Estendere l interfaccia Remote Essere pubblica Definire tutti i metodi remoti con throws RemoteException I parametri devono essere definiti come oggetti remoti o oggetti serializzabili

6 RMI Classi remote 6 Abbiamo due possibilità per definire una classe remota: Estendere la classe UnicastRemoteObject public RemoteClass extends UnicastRemoteObject implements MyRemoteInterface { Registrare la classe come remota in fase di bind public RemoteClass implements MyRemoteInterface { public static void main(string args[]) { RemoteClass myclass = new RemoteClass(); MyRemoteInterface stub = (MyRemoteInterface) UnicastRemoteObject.exportObject(myClass, 0);

7 Operazioni lato server 7 Creare il Security Manager if (System.getSecurityManager() == null) System.setSecurityManager(new SecurityManager()); Creare il Registry String host = " "; Registry registry = LocateRegistry.getRegistry(host); Bind della classe remota String url = "rmi://"+host+"/server"; registry.rebind(url, (InterfacciaRemota) istanzaclasseremota); ATTENZIONE:Il rebind sovrascrive eventuali registrazioni precedenti Al termine dell esecuzione registry.unbind(url);

8 Operazioni lato client 8 Creare il Security Manager if (System.getSecurityManager() == null) System.setSecurityManager(new SecurityManager()); Creare il Registry String host = " "; Registry registry = LocateRegistry.getRegistry(host); Lookup della classe remota String url = "rmi://"+host+"/server"; InterfacciaRemota stub = (InterfacciaRemota) registry.lookup(url); //Posso procedere all invocazione stub.remotecall();

9 Interfaccia remota del Server - Esempio 9 Definisce la chiamata remota che dovrà essere gestita dal server che implementa l interfaccia public interface Server extends Remote { public String sayhello() throws RemoteException;

10 Server - Esempio 10 public class ServerImpl implements Server { //Definisco host e indirizzo dell oggetto remoto private static final String host = " "; private static final String url = "rmi://" + host + "/Hello"; public String sayhello() throws RemoteException{ //Implemetazione della chiamata remota return "Hello, world!";

11 Server Esempio\2 11 public static void main(string args[]) { try { if (System.getSecurityManager() == null) System.setSecurityManager(new SecurityManager()); ServerImpl server = new ServerImpl(); //Esporto la classe come remota e con visibilita dell interfaccia Server stub = (Server) UnicastRemoteObject.exportObject(server, 0); //Recupero il registry e faccio il bind Registry registry = LocateRegistry.getRegistry(host); registry.rebind(url, stub); //Al termine faccio unbind registry.unbind(url); catch (Exception e) {e.printstacktrace();

12 Client - Esempio 12 public class Client{ private static final String host = " "; private static final String url = "rmi://" + host + "/Hello"; public static void main(string args[]) { try { if (System.getSecurityManager() == null) System.setSecurityManager(new SecurityManager()); Registry registry = LocateRegistry.getRegistry(host); //Recupero l istanza della classe remota Server server = (Server) registry.lookup(url); System.out.println("Dal server: "+server.sayhello()); catch (Exception e) {e.printstacktrace();

13 Sicurezza - File di Policy 13 Definisce i permessi di client e server. In questo corso non ci occupiamo di sicurezza quindi possiamo dare tutti i permessi. Contento del file di policy: grant { permission java.security.allpermission; ;

14 Procedura di avvio 14 Avviare RMI Registry rmiregistry.exe -J-Djava.rmi.server.useCodebaseOnly=false (da console) Generare stub e skeleton rmic.exe (da console) - Questa operazione è richiesta solo se si vuole compatibilita con una versione di Java precedente alla 5 Avvio del server All avvio definire i seguenti parametri oltre al classpath -Djava.rmi.server.codebase=file:/[path to class files] -Djava.security.policy=[path to policy file] Avvio del client All avvio definire i seguenti parametri oltre al classpath -Djava.security.policy=[path to policy file] -Djava.rmi.server.codebase=file:${workspace_loc:SoluzioniLab6\bin\ -Djava.security.policy=file:${workspace_loc:SoluzioniLab6\bin\java.policy

15 Avvio del server da Eclipse 15 Dopo aver posizionato il file di policy nella cartella src eseguite Run-> Run configuration Riferimento dinamico al workspace Nome del progetto

16 RMI Client CallBack 16 Nell esempio precedente il client si connette al server e invoca metodi remoti. Se vogliamo che il client possa essere invocato dal server deve essere dichiarato come classe remota. public interface Client extends Remote { public void callback() throws RemoteException; public class ClientImpl extends UnicastRemoteObject implements Client { public void callback() throws RemoteException{ System.out.println("Ricevuta callback dal server"); public interface Server extends Remote { public String sayhello(client client) throws RemoteException;

17 Comunicazione RMI Multi-Thread 17 Fino ad ora abbiamo utilizzato un client e un server; se dobbiamo gestire più client in modo concorrente dobbiamo utilizzare i threads facendo attenzione alla sincronizzazione. Per la gestione Multi-Thread della comunicazione ci sono tre approcci principali: Un thread per richiesta Un thread per client Un pool di threads condivisi per la gestione delle diverse richieste Oggi vedremo solo l approccio un thread per client

18 Esempio Interfacce 18 Interfaccia del server che gestisce l accept public interface ServerAccept extends Remote { public Server login(string name, Client client) throws RemoteException; Interfaccia thread lato server gestore della comunicazione public interface Server extends Remote { public void termina() throws RemoteException; public InfoUtenti getinfoutenti() throws RemoteException; Interfaccia del client con callback public interface Client extends Remote { public void attivoda(string attivoda) throws RemoteException;

19 Esempio Bean InfoUtenti 19 public class InfoUtenti implements Serializable { private ArrayList<String> clientnames = null; public InfoUtenti(ArrayList<String> clientnames) { this.clientnames = clientnames; public ArrayList<String> getclientnames() { return clientnames; public int getnumutenti(){ return clientnames.size();

20 Esempio Server gestore dell accept 20 public class ServerAcceptImpl extends UnicastRemoteObject implements ServerAccept { private static final String url = "rmi:// /server"; private static final String host = " "; private ArrayList<ServerImpl> clients = null; private ArrayList<String> clientnames = null; private Object lock = null; //Necessario per la sincronizzazione private Thread serverthread; //Costruttore di default public ServerAcceptImpl() throws RemoteException { clients = new ArrayList<ServerImpl>(); clientnames = new ArrayList<String>(); lock = new Object();

21 Esempio Server gestore dell accept \2 21 public static void main(string args[]) { try { if (System.getSecurityManager() == null) System.setSecurityManager(new SecurityManager()); ServerAccept stub = new ServerAcceptImpl(); Registry registry = LocateRegistry.getRegistry(host); registry.rebind(url, stub); //Da asesso in poi posso accettare le connessioni System.out.println("Server ready"); BufferedReader inputbuffer = new BufferedReader(new InputStreamReader(System.in)); String input = null; Boolean continua = true;

22 Esempio Server gestore dell accept \3 22 while(continua){ System.out.println("Digitare Exit per uscire"); input = inputbuffer.readline(); if(input.trim().equalsignorecase("exit")){ continua = false; inputbuffer.close(); registry.unbind(url); System.out.println("server terminato"); System.exit(0); catch (Exception e) { e.printstacktrace();

23 Esempio Server gestore dell accept \4 23 public Server login(string name, Client client) throws RemoteException { ServerImpl server = new ServerImpl(name, client, this); serverthread = new Thread(server); server.setthread(serverthread); synchronized (lock) { clients.add(server); clientnames.add(name); serverthread.start(); return server;

24 Esempio Server gestore dell accept \5 24 public void rimuovimi(serverimpl serverforclient) { synchronized (lock) { clients.remove(serverforclient); clientnames.remove(serverforclient.getname()); public InfoUtenti getinfoutenti() { return new InfoUtenti(clientNames);

25 Esempio Server thread per il client 25 Public class ServerImpl extends UnicastRemoteObject implements Server, Runnable { private String name; private Client client; private ServerAcceptImpl server = null; private Thread serverthread; //Costruttore invocato dal server gestore dell accept public ServerImpl(String name, Client client, ServerAcceptImpl server) throws RemoteException { this.name = name; this.server = server; this.client = client; System.out.println("Thread creato per "+name);

26 Esempio Server thread per il client \2 26 public void run() { try { int i = 0; while(true){ Thread.sleep(2000); i++; client.attivoda(name+": Attivo da "+(i*2)+" secondi"); catch (InterruptedException e) { System.out.println(name+": Interrup ricevuto. Chiudo il processo"); catch (RemoteException e) { System.err.println(name+": Errore di comunicazione con client"); server.rimuovimi(this);

27 Esempio Server thread per il client \3 27 public void termina() throws RemoteException { System.out.println(name+": Ricevuto interrupt su "+serverthread); serverthread.interrupt(); public InfoUtenti getinfoutenti() throws RemoteException { return server.getinfoutenti(); public void setthread(thread serverthread) { this.serverthread=serverthread; public String getname(){ return name;

28 Esempio Client 28 public class ClientImpl extends UnicastRemoteObject implements Client { private static final String host = " "; private static final String url = "rmi://"+host+"/server"; //Costruttore di default public ClientImpl() throws RemoteException{ public static void main(string[] args) throws RemoteException { (new ClientImpl()).start(); //Metodo di callback del server public void attivoda(string attivoda) throws RemoteException { System.out.println("Ricevuto dal server: " + attivoda);

29 Esempio Client \2 29 private void start() { try { if (System.getSecurityManager() == null) System.setSecurityManager(new SecurityManager()); Registry registry = LocateRegistry.getRegistry(host); ServerAccept stub = (ServerAccept) registry.lookup(url); int numero = (new Random()).nextInt(100); Server server = stub.login("client_"+numero, this); InfoUtenti utenti = server.getinfoutenti(); System.out.println("Utenti connessi: "+utenti.getnumutenti()); ArrayList<String> utentinomi = utenti.getclientnames(); //Ordino la collections Collections.sort(utentiNomi); Iterator<String> stringiterator = utentinomi.iterator();

30 Esempio Client \3 30 while(stringiterator.hasnext()){ System.out.println("\t"+stringIterator.next()); System.out.println("Mi metto in sleep"); Thread.sleep(8000); //Attendo 8 secondi //Se il numero casuale estratto precedente è pari termino //correttamente se dispari simulo un errore di comunicazione if(numero%2==0) server.termina(); //Segnalo l uscita al thread System.exit(0); //Esco catch (Exception e) { System.err.println("Client exception: " + e.tostring());

Corso di Reti di Calcolatori T

Corso di Reti di Calcolatori T Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 7 (svolta) Java RMI e Riferimenti Remoti Un RMI Registry Remoto Luca Foschini Anno accademico 2018/2019

Dettagli

Remote Method Invocation

Remote Method Invocation JAVA RMI LSO 2008 Remote Method Invocation Perché RMI? L obiettivo è di permettere ad una applicazione in esecuzione su una macchina locale di invocare i metodi di un oggetto in esecuzione su un altro

Dettagli

Organizzazione della lezione. Lezione 14 Remote Method Invocation - 2. Remote. Il diagramma di RemoteHello

Organizzazione della lezione. Lezione 14 Remote Method Invocation - 2. Remote. Il diagramma di RemoteHello Organizzazione della lezione Lezione 14 Remote Method Invocation - 2 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno

Dettagli

Corso di Reti di Calcolatori LA

Corso di Reti di Calcolatori LA Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori LA RMI: callback Silvia Vecchi Anno accademico 2003/2004 RMI: Callback 1 Callback (1) Molte applicazioni richiedono

Dettagli

Esercizi su Java RMI. Progetto di Cliente / Servitore e supporto. Possibile tabella mantenuta dal server

Esercizi su Java RMI. Progetto di Cliente / Servitore e supporto. Possibile tabella mantenuta dal server Esercizi su Java RMI Progetto di Cliente / Servitore e supporto Un progetto RMI si deve basare sempre sulla interfaccia remota e sulle classi del cliente e del servitore più su alcune classi di supporto

Dettagli

LPR 2005/2006 Lezione 7. paradigma di interazione domanda/risposta remote procedure call RMI (Remote Method Invocation): API JAVA esercizio

LPR 2005/2006 Lezione 7. paradigma di interazione domanda/risposta remote procedure call RMI (Remote Method Invocation): API JAVA esercizio LPR 2005/2006 Lezione 7 paradigma di interazione domanda/risposta remote procedure call RMI (Remote Method Invocation): API JAVA esercizio PARADIGMA DI INTERAZIONE A DOMANDA/RISPOSTA Paradigma di interazione

Dettagli

Corso di Reti di Calcolatori L-A

Corso di Reti di Calcolatori L-A Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 6 (svolta) Java RMI Luca Foschini Anno accademico 2010/2011 Esercitazione 6 1 Specifica: il Client

Dettagli

Concorrenza e sincronizzazione

Concorrenza e sincronizzazione Concorrenza e sincronizzazione Ingegneria del software Ing. Jody Marca jody.marca@polimi.it Cosa faremo oggi 2 Concorrenza Sincronizzazione Concorrenza 3 Nei programmi Java fino ad ora sviluppati è presente

Dettagli

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità: 7 Esercitazione (svolta): due possibilità: Java RMI: callback Molte applicazioni richiedono un meccanismo publish/subscribe I partecipanti (client) necessitano di notifiche da parte del coordinatore (server)

Dettagli

Esercizi RMI. Laboratorio di Programmazione di Rete A 5/12/2007. Esercitazione di Laboratorio

Esercizi RMI. Laboratorio di Programmazione di Rete A 5/12/2007. Esercitazione di Laboratorio Esercitazione di Laboratorio 5/12/2007 Sviluppare un applicazione RMI per la gestione di un elezione. Il server esporta un insieme di metodi: public void vota(string nome): accetta come parametro il nome

Dettagli

PROVA FINALE Ingegneria del software

PROVA FINALE Ingegneria del software PROVA FINALE Ingegneria del software Ing. Jody Marca jody.marca@polimi.it Laboratorio N 5 Cosa faremo oggi 2 Comunicazione tramite TCP socket Comunicazione tramite UDP socket RIPASSO: Input Output 3 In

Dettagli

Esercizi su Callback RMI

Esercizi su Callback RMI Esercizi su Callback RMI Esercitazione di Laboratorio di Programmazione di Rete A Daniele Sgandurra Università di Pisa 03/12/2008 Esercizio Settimana Scorsa Sviluppare un applicazione RMI per la gestione

Dettagli

Oggetti Distribuiti e Java RMI

Oggetti Distribuiti e Java RMI Oggetti Distribuiti e Java RMI Oggetti Locali - Oggetti Distribuiti Oggetti Locali: sono oggetti i cui metodi possono essere invocati solo da un processo locale, cioè da un processo in esecuzione sulla

Dettagli

Programmazione distribuita

Programmazione distribuita Programmazione distribuita 1 Architettura client-server È il modo classico di progettare applicazioni distribuite su rete Server offre un servizio "centralizzato" attende che altri (client) lo contattino

Dettagli

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010 Corso di Laurea in Ingegneria Informatica Corso di Reti di Calcolatori l Introduzione ai Thread in Java A.A. 2009/2010 1 Thread Un thread è un flusso sequenziale di esecuzione di istruzioni all interno

Dettagli

Organizzazione della lezione. Lezione 13. Applicazioni ad oggetti distribuite. Remote Method Invocation (RMI)

Organizzazione della lezione. Lezione 13. Applicazioni ad oggetti distribuite. Remote Method Invocation (RMI) Organizzazione della lezione Lezione Remote Method Invocation Vittorio Scarano Corso di Programmazione Distribuita (00-00) Laurea di I livello in Informatica Università degli Studi di Salerno Remote Method

Dettagli

Organizzazione della lezione. Lezione 16 Remote Method Invocation - 4. Modello Client Server. Le classi di Archivio Client-Server

Organizzazione della lezione. Lezione 16 Remote Method Invocation - 4. Modello Client Server. Le classi di Archivio Client-Server Organizzazione della lezione Lezione 16 Remote Method Invocation - 4 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno

Dettagli

Lezione n.10 LPR. RMI CallBacks

Lezione n.10 LPR. RMI CallBacks Lezione n.10 LPR 12/05/2008 RMI CALLBACKS Un client può richiedere servizi ad un servente mediante RMI. Talvolta è utile poter consentire al servente di contattare il client il servente notifica degli

Dettagli

Esercitazione di Sistemi Distribuiti

Esercitazione di Sistemi Distribuiti Scenario generale Esercitazione di Sistemi Distribuiti Java RMI Leonardo Mariani client object (2) estrazione dei riferimenti ad oggetti remoti Object Registry (3) invocazione remota (4) eventuale invio

Dettagli

Organizzazione della lezione. Invocazione remota di metodi fai-da-te. Lezione 12 Introduzione a Remote Method Invocation

Organizzazione della lezione. Invocazione remota di metodi fai-da-te. Lezione 12 Introduzione a Remote Method Invocation Organizzazione della lezione Lezione 12 Introduzione a Remote Method Invocation Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi

Dettagli

14. Java Remote Method Invocation (2)

14. Java Remote Method Invocation (2) 14. Java Remote Method Invocation (2) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione Il modello della

Dettagli

Compute engine generici in RMI

Compute engine generici in RMI Compute engine generici in RMI Esempio: Calcolo del prodotto scalare Un unico server offre il servizio di calcolo del prodotto scalare tra vettori di interi Un client richiede al server il calcolo del

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA9 B3.1 Mutua esclusione 1 Prerequisiti Programmazione concorrente Sezione critica Mutua esclusione lock() e unlock() 2 1 Introduzione Si considerino le seguenti situazioni

Dettagli

Organizzazione della lezione. Organizzazione della lezione. 14. Java Remote Method Invocation (2) La sicurezza in Java

Organizzazione della lezione. Organizzazione della lezione. 14. Java Remote Method Invocation (2) La sicurezza in Java Organizzazione della lezione 14. Java Remote Method Invocation (2) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Il modello della

Dettagli

Principi, Modelli e Applicazioni per Sistemi Distribuiti M

Principi, Modelli e Applicazioni per Sistemi Distribuiti M Università degli Studi di Bologna Facoltà di Ingegneria Principi, Modelli e Applicazioni per Sistemi Distribuiti M Esercitazione 2 (svolta) Socket Java con connessione Alessandro Pernafini Architettura

Dettagli

Lezione n.10 LPR Informatica Applicata RMI Approfondimenti Callback. 15/05/2012 Laura Ricci

Lezione n.10 LPR Informatica Applicata RMI Approfondimenti Callback. 15/05/2012 Laura Ricci Lezione n.10 LPR Informatica Applicata RMI Approfondimenti Callback 15/05/2012 Laura Ricci Laura Ricci 1 RMI: IL MECCANISMO DELLE CALLBACK RMI utilizza una comunicazione sincrona a rendez vouz esteso:

Dettagli

Compute engine generici in RMI

Compute engine generici in RMI Compute engine generici in RMI Esempio: Calcolo del prodotto scalare Un unico server offre il servizio di calcolo del prodotto scalare tra vettori di interi Un client richiede al server il calcolo del

Dettagli

Contesto e motivazioni Architettura e concetti di base Componenti di RMI RMIRegistry Interfacce, eccezioni e classi Lo sviluppo di una applicazione L

Contesto e motivazioni Architettura e concetti di base Componenti di RMI RMIRegistry Interfacce, eccezioni e classi Lo sviluppo di una applicazione L CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell Informazione Politecnico di Milano Programmazione Object Oriented in Java Java Remote Method Invocation Docente: Diego Peroni CEFRIEL

Dettagli

Lezione n.9. RMI: Remote Method Invocation 1/12/2009 Andrea Corradini

Lezione n.9. RMI: Remote Method Invocation 1/12/2009 Andrea Corradini Università degli Studi di Pisa Dipartimento di Informatica Lezione n.9 LPR-B-09 RMI: Remote Method Invocation 1/12/2009 Andrea Corradini Lezione 9: RMI - Remote Method Invocation Andrea Corradini 1 Da

Dettagli

Multithreading/2. Più richieste servite simultaneamente > 1 thread per ogni connessione client (+ 1 thread per accettare nuove richieste).

Multithreading/2. Più richieste servite simultaneamente > 1 thread per ogni connessione client (+ 1 thread per accettare nuove richieste). Multithreading Osservazioni su EchoServer Programmazione TCP in Java EchoServer ed EchoClient Uso del multithreading nella programmazione di rete ChatClient e ChatServer Multithreading/2 Più richieste

Dettagli

Java thread, concorrenza

Java thread, concorrenza Java thread, concorrenza laboratorio 1 A.Memo febbraio 2004 il thread principale in Java ogni programma in esecuzione è un thread il metodo main() è associato al main thread per poter accedere alle proprietà

Dettagli

Il problema nasce dalla caratteristica di Java di essere distribuito

Il problema nasce dalla caratteristica di Java di essere distribuito Organizzazione della lezione 14. Java Remote Method Invocation (2) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Istanziazione

Dettagli

Esercitazione di Sistemi Distribuiti: Java RMI

Esercitazione di Sistemi Distribuiti: Java RMI Esercitazione di Sistemi Distribuiti: Java RMI Anno Accademico 2007-08 Marco Comerio comerio@disco.unimib.it Richiami Teorici Oggetti distribuiti 2-16 Usuale organizzazione di un oggetto remoto con un

Dettagli

RMI. Remote Method Invocation. Enrico Tassi, 3/4/2009. Slides originali di Nicola Gessa

RMI. Remote Method Invocation. Enrico Tassi, 3/4/2009. Slides originali di Nicola Gessa RMI Remote Method Invocation Enrico Tassi, 3/4/2009 Slides originali di Nicola Gessa Remote Method Invocation Si colloca del mondo della programmazione distribuita. L obiettivo è di fornire al programmatore

Dettagli

Architetture distribuite Alcuni esempi: Alcuni commenti sul ruolo del registry. Import Interfaccia remota Due metodi remoti

Architetture distribuite Alcuni esempi: Alcuni commenti sul ruolo del registry. Import Interfaccia remota Due metodi remoti Organizzazione della lezione 17. Applicazioni ed Esempi Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Architetture distribuite

Dettagli

Java RMI. Alcune premesse Interfaccia e Implementazione RMI. Architettura. Esempi interfaccia e implementazione

Java RMI. Alcune premesse Interfaccia e Implementazione RMI. Architettura. Esempi interfaccia e implementazione Java RMI Alcune premesse Interfaccia e Implementazione Modello OO Interfaccia esprime una vista astratta di un ente computazionale, nascondendo organizzazione interna dettagli di funzionamento Implementazione

Dettagli

Activation In sintesi: è inutile avere attivi degli oggetti se non vengono utilizzati

Activation In sintesi: è inutile avere attivi degli oggetti se non vengono utilizzati Activation In generale i Sistemi ad oggetti distribuiti sono progettati per lavorare con oggetti persistenti. Dato che questi sistemi saranno composti da migliaia (forse milioni) di tali oggetti, sarebbe

Dettagli

Corso di Reti di Calcolatori L-A

Corso di Reti di Calcolatori L-A Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 0 (svolta) Multithreading in Java Luca Foschini Anno accademico 2009/2010 Esercitazione 0 1 Modello

Dettagli

Lezione n.10. RMI CallBacks 9/12/2009 Andrea Corradini

Lezione n.10. RMI CallBacks 9/12/2009 Andrea Corradini Università degli Studi di Pisa Dipartimento di Informatica Lezione n.10 LPR-B-09 RMI CallBacks 9/12/2009 Andrea Corradini Lezione 10: RMI CallBacks - Miscellanea Andrea Corradini 1 RMI: PASSAGGIO DI PARAMETRI

Dettagli

LEZIONE n.8 LPR REMOTE METHOD INVOCATION. 28/04/2008 Laura Ricci

LEZIONE n.8 LPR REMOTE METHOD INVOCATION. 28/04/2008 Laura Ricci LEZIONE n.8 LPR REMOTE METHOD INVOCATION 28/04/2008 Laura Ricci Remote Method Invocation Laura Ricci 1 RIASSUNTO DELLA LEZIONE paradigma di interazione domanda/risposta remote procedure call RMI (Remote

Dettagli

RMI: metodi equals e hashcode

RMI: metodi equals e hashcode RMI: metodi equals e hashcode Per verificare se due oggetti remoti contengono gli stessi dati, la chiamata indirizzata al metodo equals() avrebbe bisogno di contattare i server dove si trovano gli oggetti

Dettagli

Server Sequenziale. Server Concorrente. Esercitazione: Socket Java con connessione

Server Sequenziale. Server Concorrente. Esercitazione: Socket Java con connessione Esercitazione: Socket Java con connessione Sviluppare un applicazione C/S che effettui il trasferimento di un file dal client al server (put) usando una connessione. In particolare nel servizio: il client

Dettagli

Multithreading. Multithreading/2

Multithreading. Multithreading/2 Multithreading Osservazioni su EchoServer Programmazione TCP in Java EchoServer ed EchoClient Uso del multithreading nella programmazione di rete ChatClient e ChatServer Esempio di Web server(?) Multithreading/2

Dettagli

Java Remote Method Invocation

Java Remote Method Invocation Java Remote Method Invocation Programmazione in Rete e Laboratorio Comunicazione distribuita Port1 Java VM1 Java VM2 Port 2 Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino

Dettagli

Lezione n.9 LPR Informatica Applicata Callbacks. Thread Miscellanea. 17/05/2010 Laura Ricci

Lezione n.9 LPR Informatica Applicata Callbacks. Thread Miscellanea. 17/05/2010 Laura Ricci Lezione n.9 LPR Informatica Applicata Callbacks 17/05/2010 Laura Ricci Laura Ricci 1 RMI: IL MECCANISMO DELLE CALLBACK RMI utilizza una comunicazione sincrona a rendez vouz esteso: il client invoca un

Dettagli

RMI e Firewall. Una soluzione è offerta dal transport layer di RMI stesso

RMI e Firewall. Una soluzione è offerta dal transport layer di RMI stesso Firewall Ogni applicazione di rete, che opera fuori da quelli che sono i confini di una rete locale, incontra inevitabilmente i cosiddetti firewall Tipicamente i firewall bloccano tutto il traffico di

Dettagli

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind() Organizzazione della lezione Lezione 18 Remote Method Invocation - 6 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno

Dettagli

Sincronizzazione con Java

Sincronizzazione con Java Sincronizzazione con Java Corse critiche e sincronizzazione Java implementa un meccanismo simile al monitor per garantire la sincronizzazione fra thread Ogni oggetto ha un lock associato ad esso Nelle

Dettagli

16. Java Remote Method Invocation (4)

16. Java Remote Method Invocation (4) 16. Java Remote Method Invocation (4) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione Oggetti attivabili

Dettagli

I Thread. un thread è uno stream di esecuzione del programma

I Thread. un thread è uno stream di esecuzione del programma I Thread un thread è uno stream di esecuzione del programma Sistema Operativo e Thread Un processo o thread una successione di operazioni che vengono eseguite dal sistema operativo in modo sequenziale

Dettagli

Introduzione a Java Remote Method Invocation (RMI)

Introduzione a Java Remote Method Invocation (RMI) Introduzione a Java Remote Method Invocation (RMI) SAPIENZA Università di Roma Corso di Architetture Software Orientate ai Servizi E risuona il mio barbarico yawp sopra i tetti del mondo ( I sound my barbaric

Dettagli

Problema del buffer limitato. Lorenzo Gallucci

Problema del buffer limitato. Lorenzo Gallucci Problema del buffer limitato Lorenzo Gallucci Buffer limitato Immaginiamo una struttura dati che contiene delle informazioni La struttura può, in ogni momento, avere dello spazio libero oppure no Se vi

Dettagli

I Thread. Sistema Operativo e Thread

I Thread. Sistema Operativo e Thread I Thread un thread è uno stream di esecuzione del programma Sistema Operativo e Thread Un processo o thread una successione di operazioni che vengono eseguite dal sistema operativo in modo sequenziale

Dettagli

10. Invocazione di Metodi Remoti

10. Invocazione di Metodi Remoti 10. Invocazione di Metodi Remoti Vittorio Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione Programmazione Distribuita.

Dettagli

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144 Mobilità di Codice Abbiamo già visto come un dato host possa trasmettere un oggetto (serializzabile) ad un altro host. Quest ultimo potrà eseguire l oggetto pur non possedendo il bytecode della classe

Dettagli

RMI remote method invocation

RMI remote method invocation RMI remote method invocation Marco Danelutto Lab. Programmazione di Rete :: A.A. 2007-2008 Concetto RPC/RMI invocazione di procedura/metodo o.method(params); eseguita su oggetto remoto: metodo per ottenere

Dettagli

Esercizio Sincronizzazione Thread

Esercizio Sincronizzazione Thread Esercitazione di oratorio 17/10/2007 Esercizio Il laboratorio di Informatica del Polo Marzotto e utilizzato da tre tipi di utenti, studenti, tesisti e professori ed ogni utente deve fare una richiesta

Dettagli

Organizzazione della lezione. 16. Java Remote Method Invocation (4) Le classi ed interfacce di RMI. Persistenza. Oggetti attivabili

Organizzazione della lezione. 16. Java Remote Method Invocation (4) Le classi ed interfacce di RMI. Persistenza. Oggetti attivabili Organizzazione della lezione 16. Java Remote Method Invocation (4) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Oggetti attivabili

Dettagli

Organizzazione della lezione. Modelli di programmazione: RPC e RMI Trasparenza: un dibattito Un esempio di implementazione di invocazione remota

Organizzazione della lezione. Modelli di programmazione: RPC e RMI Trasparenza: un dibattito Un esempio di implementazione di invocazione remota Organizzazione della lezione 10. Invocazione di Metodi Remoti Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Modelli di programmazione:

Dettagli

Laurea in Informatica. "Programmazione Distribuita" - Prof. Scarano. A.A Università di Salerno 1. Organizzazione della lezione

Laurea in Informatica. Programmazione Distribuita - Prof. Scarano. A.A Università di Salerno 1. Organizzazione della lezione 12. Invocazione di Metodi Remoti Vittorio Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione Modelli di programmazione:

Dettagli

Programmazione di rete in Java

Programmazione di rete in Java Programmazione di rete in Java Reti di calcolatori Una rete di calcolatori è un sistema che permette la condivisione di dati informativi e risorse (sia hardware sia software) tra diversi calcolatori. Lo

Dettagli

Organizzazione della lezione. Lezione 17 Remote Method Invocation - 5. Remote. Le classi ed interfacce di RMI. Persistenza. Oggetti attivabili

Organizzazione della lezione. Lezione 17 Remote Method Invocation - 5. Remote. Le classi ed interfacce di RMI. Persistenza. Oggetti attivabili Organizzazione della lezione Lezione 17 Remote Method Invocation - 5 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno

Dettagli

Multithreading in Java I parte. Lorenzo Gallucci

Multithreading in Java I parte. Lorenzo Gallucci Multithreading in Java I parte Lorenzo Gallucci Java: un linguaggio ed un sistema predisposti per il multitasking È possibile creare e gestire Thread nativamente (senza dover ricorrere a librerie esterne)

Dettagli

Corso di Reti di Calcolatori L-A

Corso di Reti di Calcolatori L-A Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 2 (svolta) Socket Java con connessione Luca Foschini Anno accademico 2009/2010 Esercitazione 2 1 Architettura

Dettagli

Politecnico di Milano

Politecnico di Milano Appello 5 febbraio 2016 Politecnico di Milano Anno accademico 2014-2015 Ingegneria del Software Cognome: DESIGN AND IMPLEMENTATION OF MOBILE APPLICATIONS 24 / 09 / 2015 Nome: Matricola: LAUREANDO Sezione

Dettagli

Socket & RMI Ingegneria del Software - San Pietro

Socket & RMI Ingegneria del Software - San Pietro Socket & RMI Ingegneria del Software - San Pietro Socket È possibile trattare la comunicazione di rete allo stesso modo con cui è possibile trattare la lettura da file. La classe Socket rappresenta la

Dettagli

invocazione remota ottobre Fonti [CDK/4e] Chapter 5, Distributed Objects and Remote Invocation [Liu] Chapter 8, Advanced RMI

invocazione remota ottobre Fonti [CDK/4e] Chapter 5, Distributed Objects and Remote Invocation [Liu] Chapter 8, Advanced RMI Luca Cabibbo Architetture Software Oggetti distribuiti e invocazione remota Dispensa MW 3 ottobre 2008 1 -Fonti [CDK/4e] Chapter 5, Distributed Objects and Remote Invocation [Liu] Chapter 7, Distributed

Dettagli

GESTIONE DEGLI ERRORI

GESTIONE DEGLI ERRORI GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori

Dettagli

SCD. Il modello Java RMI. Sistemi distribuiti: il modello Java RMI. Architettura del modello 2. Architettura del modello 3. Architettura del modello 1

SCD. Il modello Java RMI. Sistemi distribuiti: il modello Java RMI. Architettura del modello 2. Architettura del modello 3. Architettura del modello 1 Architettura del modello 2 Il modello Java RMI Anno accademico 2017/18 Sistemi Concorrenti e Distribuiti Tullio Vardanega, tullio.vardanega@math.unipd.it SCD Realizzazione di R (lato servente) con proprio

Dettagli

GESTIONE DEGLI ERRORI

GESTIONE DEGLI ERRORI GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori

Dettagli

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it Java Remote Method Invocation -- RMI G. Prencipe prencipe@di.unipi.it RMI RMI è una tecnologia JAVA che permette a una JVM di comunicare con un altra JVM per farle eseguire metodi È possibile che oggetti

Dettagli

Java RMI (Remote Method Invocation)

Java RMI (Remote Method Invocation) Java RMI (Remote Method Invocation) Accesso ad oggetti remoti In Java non sono possibili riferimenti remoti RPC in JAVA Le RMI introducono la possibilità di richiedere esecuzione di metodi remoti in JAVA

Dettagli

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) (RMI) Remote Method Invocation (RMI) in Java. Walter Cazzola Dipartimento di Informatica e Comunicazione Università à degli Studi di Milano. e-mail: cazzola@disi disi.unige.it Walter Cazzola Java: Remote

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA9 B2 Multithreading 1 Prerequisiti Programmazione base in Java Significato di multithreading Concetti di base sui sistemi operativi Attesa attiva Attesa passiva 2 1

Dettagli

Agenti Mobili in Java RMI

Agenti Mobili in Java RMI Agenti Mobili in Java RMI Un agente è una computazione che agisce per conto di un host presso un altro host. Gli agenti in Java RMI sfruttano due peculiarità di Java: Serializzazione, attraverso cui gli

Dettagli

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione (sede di Latina) Corso di Laurea in Ingegneria dell Informazione (consorzio Nettuno) Eccezioni L esistenza di

Dettagli

Esercitazione 2: Java Thread

Esercitazione 2: Java Thread Esercitazione 2: Java Thread Thread Un thread è un singolo flusso sequenziale di controllo all interno di un processo Un thread (o processo leggero) è un unità di esecuzione che condivide codice e dati

Dettagli

Esercitazione 2: Java Thread. Java Thread. Java Thread. Un thread:

Esercitazione 2: Java Thread. Java Thread. Java Thread. Un thread: Esercitazione 2: Thread Un thread è un singolo flusso sequenziale di controllo all interno di un processo Un thread (o processo leggero) è un unità di esecuzione che condivide codice e dati con altri thread

Dettagli

Trattamento delle Eccezioni Threads

Trattamento delle Eccezioni Threads Programmazione ad Oggetti e Una exception è una situazione anormale generata da una sequenza di codice a tempo di esecuzione (es. divisione per 0) Java runtime costruisce un oggetto di tipo Exception ogni

Dettagli

SCD. Sistemi distribuiti: il modello Java RMI. UniPD - SCD 2011/12 - Sistemi Concorrenti e Distribuiti 1. Architettura del modello 1

SCD. Sistemi distribuiti: il modello Java RMI. UniPD - SCD 2011/12 - Sistemi Concorrenti e Distribuiti 1. Architettura del modello 1 Il modello Java RMI Anno accademico 2011/12 Sistemi Concorrenti e Distribuiti Tullio Vardanega, tullio.vardanega@math.unipd.it SCD Architettura del modello 1 L oggetto remoto è l unità di distribuzione

Dettagli

Lezione n.9 LPR- INFORMATICA APPLICATA REMOTE METHOD INVOCATION CALLBACKS. 04/05/2009 Laura Ricci

Lezione n.9 LPR- INFORMATICA APPLICATA REMOTE METHOD INVOCATION CALLBACKS. 04/05/2009 Laura Ricci Lezione n.9 LPR- INFORMATICA APPLICATA REMOTE METHOD INVOCATION CALLBACKS 04/05/2009 Laura Ricci Laura Ricci 1 RIASSUNTO DELLA LEZIONE paradigma di interazione domanda/risposta remote procedure call RMI

Dettagli

Lezione n.8. RMI: Remote Method Invocation. 1/12/2009 Vincenzo Gervasi

Lezione n.8. RMI: Remote Method Invocation. 1/12/2009 Vincenzo Gervasi Università degli Studi di Pisa Dipartimento di Informatica Lezione n.8 LPR-A-09 RMI: Remote Method Invocation 1/12/2009 Vincenzo Gervasi Lezione U 8: RMI - Remote Method Invocation Vincenzo Gervasi 1 Da

Dettagli

SCD. Il modello Java RMI. Sistemi distribuiti: il modello Java RMI. Architettura del modello 2. Architettura del modello 3. Architettura del modello 1

SCD. Il modello Java RMI. Sistemi distribuiti: il modello Java RMI. Architettura del modello 2. Architettura del modello 3. Architettura del modello 1 Architettura del modello 2 Il modello Java RMI Anno accademico 2015/16 Sistemi Concorrenti e Distribuiti Tullio Vardanega, tullio.vardanega@math.unipd.it SCD Realizzazione di R (lato servente) con proprio

Dettagli

Programmazione Concorrente e Distribuita

Programmazione Concorrente e Distribuita Programmazione Concorrente e Distribuita Esame scritto del 29 Giugno 2012 Versione I Esercizio 1 ( punti) 1 class Mammal { 2 S t r i n g name = f u r r y ; 3 S t r i n g makenoise ( ) { return g e n e

Dettagli

Programmazione Concorrente e Distribuita

Programmazione Concorrente e Distribuita Programmazione Concorrente e Distribuita Esame scritto del 10 Gennaio 2012 Versione C Esercizio 1 (5 punti) 1 public class Tenor extends S i n g e r { 2 public s t a t i c S t r i n g s i n g ( ) { 3 return

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA9 B3.2 Produttore-consumatore 1 Prerequisiti Elementi di programmazione concorrente Mutua esclusione Produttore-consumatore 2 1 Introduzione In questa Unità vediamo

Dettagli

SCD. Il modello Java RMI. Sistemi distribuiti: il modello Java RMI. Architettura del modello 2. Architettura del modello 1. Architettura del modello 3

SCD. Il modello Java RMI. Sistemi distribuiti: il modello Java RMI. Architettura del modello 2. Architettura del modello 1. Architettura del modello 3 Architettura del modello 2 Il modello Java RMI Anno accademico 2014/15 Sistemi Concorrenti e Distribuiti Tullio Vardanega, tullio.vardanega@math.unipd.it SCD Oggetto remoto oggetto locale /I Rispetto alla

Dettagli

Corso di Progettazione del Software

Corso di Progettazione del Software T. Mancini & M. Scannapieco S.JOO.3 Java: le classi Object e Class February 2, 2008 p. 1/12 Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale Corso

Dettagli

Sincronizzazione con Java

Sincronizzazione con Java Sincronizzazione con Java Corse critiche e sincronizzazione Java implementa un meccanismo simile al monitor per garantire la sincronizzazione fra thread Ogni oggetto ha un lock associato ad esso Nelle

Dettagli

Eccezioni. Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi.

Eccezioni. Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi. Eccezioni Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi fanizzi@di.uniba.it 2 Eccezione Evento anormale che avviene durante l'esecuzione del programma

Dettagli

Uguaglianza e copia di oggetti

Uguaglianza e copia di oggetti Uguaglianza e copia di oggetti Sommario 1. Classi Object e Class 2. Uguaglianza superficiale e uguaglianza profonda 3. Copia superficiale e copia profonda 4. Uguaglianza e copia in classi derivate 1 La

Dettagli

Obiettivo della lezione. Presentare Java 2 Enterprise Edition (J2EE) Presentare due tecnologie Java connesse ad Enterprise Java Beans

Obiettivo della lezione. Presentare Java 2 Enterprise Edition (J2EE) Presentare due tecnologie Java connesse ad Enterprise Java Beans Lezione Java RMI-IIOP IIOP Vittorio Scarano Corso di Sistemi Distribuiti (00-00) Laurea Specialistica in Informatica Università degli Studi di Salerno Obiettivo della lezione Presentare Java Enterprise

Dettagli

THREAD IN JAVA. Thread. Un thread (lightweight process) è un singolo flusso sequenziale di controllo all interno di un processo

THREAD IN JAVA. Thread. Un thread (lightweight process) è un singolo flusso sequenziale di controllo all interno di un processo THREAD IN JAVA Come si può realizzare il concetto di Thread in Java? NEL MODO PIU NATURALE! Sono oggetti particolari ai quali si richiede un servizio (chiamato start()) corrispondente al lancio di una

Dettagli

Programmazione a oggetti

Programmazione a oggetti Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software

Dettagli

Java RMI: Esempio Completo di un Applicazione Distribuita

Java RMI: Esempio Completo di un Applicazione Distribuita Java RMI: Esempio Completo di un Applicazione Distribuita Il Problema Produttore/Consumatore in Ambiente Distribuito* *a cura del Prof. L. Nigro, Università della Calabria Java RMI (Remote Method Invocation)

Dettagli