Esercizi RMI. Laboratorio di Programmazione di Rete A 5/12/2007. Esercitazione di Laboratorio
|
|
- Mattia Randazzo
- 6 anni fa
- Visualizzazioni
Transcript
1 Esercitazione di Laboratorio 5/12/2007
2 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 del candidato. Non restituisce alcun valore. Registra il voto di un candidato in una struttura dati opportunamente scelta. public int risultato(string nome): accetta come parametro il nome di un candidato e restituisce i voti accumulati da tale candidato fino a quel momento. un metodo che consenta di ottenere i nomi di tutti i candidati, con i rispettivi voti, ordinati rispetto ai voti ottenuti.
3 Server
4 Server
5 Server
6 Server
7 Server
8 Server
9 Client
10 Client
11 Client
12 Client
13 Client
14 Server e Client: la Classe Candidato import java.io.serializable; public class Candidato implements Serializable private static final long serialversionuid = 1L; private String nome; private int voti; public Candidato(String nome) this.nome = nome; this.voti = 1; public String getnome() return this.nome; public int getvoti() return this.voti; public void vota() this.voti++; public String tostring() return nome + : + voti;
15 Server: l Interfaccia Remota Votazione import java.rmi.remote; import java.rmi.remoteexception; import java.util.arraylist; public interface Votazione extends Remote void vota(string nome) throws RemoteException; int risultato(string nome) throws RemoteException; ArrayList<Candidato> getcandidati() throws RemoteException;
16 Server: l Oggetto Remoto import java.rmi.registry.locateregistry; import java.rmi.registry.registry; import java.rmi.server.unicastremoteobject; import java.util.arraylist; import java.util.collections; import java.util.comparator; public class VotazioneServer implements Votazione private ArrayList<Candidato> candidati = new ArrayList<Candidato>(); public synchronized void vota(string nome) for(int i = 0; i < candidati.size(); i++) Candidato c = candidati.get(i); if(c.getnome().compareto(nome) == 0) c.vota(); return; candidati.add(new Candidato(nome));
17 Server: l Oggetto Remoto public synchronized int risultato(string nome) for(int i = 0; i < candidati.size(); i++) Candidato c = candidati.get(i); if(c.getnome().compareto(nome) == 0) return c.getvoti(); return 0; public synchronized ArrayList<Candidato> getcandidati() Collections.sort(candidati, new Comparator<Candidato>() public int compare(candidato c1, Candidato c2) return c2.getvoti() - c1.getvoti(); ); return candidati;
18 Server: il Main public static void main(string args[]) try VotazioneServer votazioneimpl = new VotazioneServer(); Votazione votazionestub = (Votazione) UnicastRemoteObject.exportObject(votazioneImpl, 0); Registry registry = LocateRegistry.getRegistry(); registry.rebind( votazione, votazionestub); System.out.println( Server ready ); catch(exception e)e.printstacktrace();
19 Client import java.rmi.registry.locateregistry; import java.rmi.registry.registry; import java.util.arraylist; public class VotazioneClient public static void main(string[] args) String host = localhost ; if(args.length > 0) host = args[0]; try Registry registry = LocateRegistry.getRegistry(host); Votazione stub = (Votazione) registry.lookup( votazione ); //si simulano tante votazioni in parallelo stub.vota( Berlusconi );stub.vota( Veltroni ); stub.vota( Veltroni );stub.vota( Veltroni ); stub.vota( Casini );stub.vota( Tremonti ); stub.vota( Veltroni );stub.vota( Fassino ); stub.vota( Fassino );stub.vota( Berlusconi ); stub.vota( Prodi );stub.vota( Berlusconi ); stub.vota( Bindi );stub.vota( Storace ); stub.vota( Berlusconi );stub.vota( Berlusconi ); stub.vota( Veltroni );stub.vota( Bertinotti );
20 Client System.out.println( Voti Berlusconi: + stub.risultato( Berlusconi )); System.out.println( Voti Fassino: + stub.risultato( Fassino )); System.out.println( Voti Casini: + stub.risultato( Casini )); System.out.println( Voti Veltroni: + stub.risultato( Veltroni )); System.out.println( ); ArrayList<Candidato> candidati = stub.getcandidati(); for(int i = 0; i < candidati.size(); i++) System.out.println(candidati.get(i)); catch(exception e)e.printstacktrace();
21 Esempio Sessione Server $ ssh user@fujim11.cli.di.unipi.it fujim11 [~] -> cd java/votazione/server/ fujim11 [~/java/votazione/server] -> ls *.java 4 Candidato.java 4 Votazione.java 4 VotazioneServer.java fujim11 [~/java/votazione/server] -> javac *.java fujim11 [~/java/votazione/server] -> rmiregistry & [1] 7534 fujim11 [~/java/votazione/server] -> java VotazioneServer Server ready
22 Esempio Sessione Client $ ssh user@fujim9.cli.di.unipi.it Password: fujim9 [~] -> cd java/votazione/client/ fujim9 [~/java/votazione/client] -> ls *.java 4 Candidato.java 4 VotazioneClient.java 4 Votazione.java fujim9 [~/java/votazione/client] -> javac *.java fujim9 [~/java/votazione/client] -> java VotazioneClient fujim11 Voti Berlusconi:5 Voti Fassino:2 Voti Casini:1 Voti Veltroni:5 Berlusconi:5 Veltroni:5 Fassino:2 Casini:1 Tremonti:1 Prodi:1 Bindi:1 Storace:1 Bertinotti:1
23 Modificare l esercizio precedente in modo che il server notifichi ogni nuovo voto ricevuto a tutti i client che hanno votato fino a quel momento. La registrazione dei client avviene nel momento del voto.
24 Callback: Osservazioni Per stabilire una connessione di callback RMI, devono essere fatte le seguenti estensioni: Il server deve avere una lista di client registrati. Il server ha bisogno di un metodo per permettere ai client di registrarsi e di de-registrarsi. Dato che i client devono chiamare questi metodo sul server, i metodi sono remoti: vota e unregisterclient. Visto che il client registrato deve poter essere chiamato da remoto, il client deve pubblicizzare i suoi metodi remoti, per cui deve avere un oggetto che implementa un interfaccia remota chiamabile dal server. L interfaccia è ClientCallbackInterface. Il metodo chiamabile è notify. Il client non ha bisogno di invocare rmiregistry. Infatti, il client quando invoca il metodo remoto per registrarsi passa un riferimento ad un oggetto remoto esportato dal client, per cui il server non ha bisogno di fare una lookup su quell oggetto visto che gli viene già passato. Il client, per terminare deve: (i) invocare la de-registrazione; (ii) fare l operazione inversa della export, per rimuovere l oggetto remoto dagli oggetti esportati (altrimenti il client rimane appeso e va terminato con CTRL+C).
25 Server
26 Client
27 Client
28 Client
29 Client
30 Client
31 Client
32 Client
33 Client
34 Server: l Interfaccia Remota Votazione import java.rmi.remote; import java.rmi.remoteexception; import java.util.arraylist; public interface Votazione extends Remote void vota(string nome, ClientCallbackInterface client) throws RemoteException; int risultato(string nome) throws RemoteException; ArrayList<Candidato> getcandidati() throws RemoteException; void unregisterclient(clientcallbackinterface client) throws RemoteException;
35 Server: l Oggetto Remoto import java.rmi.remoteexception; import java.rmi.registry.locateregistry; import java.rmi.registry.registry; import java.rmi.server.unicastremoteobject; import java.util.*; public class VotazioneServer implements Votazione private ArrayList<Candidato> candidati = new ArrayList<Candidato>(); private ArrayList<ClientCallbackInterface> clients = new ArrayList<ClientCallbackInterface>(); public synchronized void vota(string nome, ClientCallbackInterface client) if(clients.contains(client)) return; clients.add(client); for(int i = 0; i < candidati.size(); i++) Candidato c = candidati.get(i); if(c.getnome().compareto(nome) == 0) c.vota(); notifyclients(c); return; Candidato c = new Candidato(nome); candidati.add(c); notifyclients(c);
36 Server: l Oggetto Remoto private synchronized void notifyclients(candidato c) for(iterator<clientcallbackinterface> i = clients.iterator(); i.hasnext();) ClientCallbackInterface client = i.next(); try client.notify(c); catch(remoteexception e)system.out.println(e); public void unregisterclient(clientcallbackinterface client) clients.remove(client); public synchronized int risultato(string nome) for(int i = 0; i < candidati.size(); i++) Candidato c = candidati.get(i); if(c.getnome().compareto(nome) == 0) return c.getvoti(); return 0;
37 Server: l Oggetto Remoto e il Main public synchronized ArrayList<Candidato> getcandidati() Collections.sort(candidati, new Comparator<Candidato>() public int compare(candidato c1, Candidato c2) return c2.getvoti() - c1.getvoti(); ); return candidati; public static void main(string args[]) try VotazioneServer votazioneimpl = new VotazioneServer(); Votazione votazionestub = (Votazione) UnicastRemoteObject.exportObject(votazioneImpl, 0); Registry registry = LocateRegistry.getRegistry(); registry.rebind( votazione, votazionestub); System.out.println( Server ready ); catch(exception e)e.printstacktrace();
38 Client: l Oggetto Remoto import java.rmi.remote; import java.rmi.remoteexception; public interface ClientCallbackInterface extends Remote public void notify(candidato candidato) throws RemoteException; public class ClientCallbackImpl implements ClientCallbackInterface public void notify(candidato candidato) System.out.println( E stato votato: + candidato);
39 Client: il Main import java.rmi.registry.locateregistry; import java.rmi.registry.registry; import java.rmi.server.unicastremoteobject; import java.util.arraylist; public class VotazioneClient public static void main(string[] args) String host = localhost ; String nomecandidato = ; if(args.length > 1) host = args[0]; nomecandidato = args[1]; try Registry registry = LocateRegistry.getRegistry(host); Votazione stub = (Votazione) registry.lookup( votazione ); ClientCallbackImpl client = new ClientCallbackImpl(); ClientCallbackInterface callbackstub = (ClientCallbackInterface) UnicastRemoteObject.exportObject(client, 0); stub.vota(nomecandidato, callbackstub); Thread.sleep(25000); ArrayList<Candidato> candidati = stub.getcandidati(); for(int i = 0; i < candidati.size(); i++) System.out.println(candidati.get(i)); stub.unregisterclient(callbackstub); UnicastRemoteObject.unexportObject(client, true); catch(exception e)e.printstacktrace();
40 Esempio Sessione Server $ ssh user@fujim11.cli.di.unipi.it Password: fujim11 [~] -> cd java/votazionecallback/server/ fujim11 [~/java/votazionecallback/server] -> ls *.java 4 Candidato.java 4 ClientCallbackInterface.java 4 Votazione.java 4 VotazioneServer.java fujim11 [~/java/votazionecallback/server] -> javac *.java fujim11 [~/java/votazionecallback/server] -> rmiregistry & [1] 8160 fujim11 [~/java/votazionecallback/server] -> java VotazioneServer Server ready
41 Esempio Sessione Client in Parallelo Prima votazione: ssh Password: fujim8 [~] -> cd java/votazionecallback/client/ fujim8 [~/java/votazionecallback/client] -> ls *.java 4 Candidato.java 4 ClientCallbackInterface.java 4 Votazione.java 4 ClientCallbackImpl.java 4 VotazioneClient.java fujim8 [~/java/votazionecallback/client] -> javac *.java fujim8 [~/java/votazionecallback/client] -> java VotazioneClient fujim11 Berlusconi E stato votato:berlusconi:1 E stato votato:veltroni:1 E stato votato:prodi:1 Berlusconi:1 Veltroni:1 Prodi:1 ssh user@fujim9.cli.di.unipi.it [...] fujim9 [~/java/votazionecallback/client] -> java VotazioneClient fujim11 Veltroni E stato votato:veltroni:1 E stato votato:prodi:1 Berlusconi:1 Veltroni:1 Prodi:1
42 Esempio Sessione Client in Parallelo ssh [...] fujim5 [~/java/votazionecallback/client] -> java VotazioneClient fujim11 Prodi E stato votato:prodi:1 Berlusconi:1 Veltroni:1 Prodi:1 Seconda votazione: fujim8 [~/java/votazionecallback/client] -> java VotazioneClient fujim11 Casini E stato votato:casini:1 E stato votato:prodi:2 E stato votato:berlusconi:2 Berlusconi:2 Prodi:2 Veltroni:1 Casini:1 fujim9 [~/java/votazionecallback/client] -> java VotazioneClient fujim11 Prodi E stato votato:prodi:2 E stato votato:berlusconi:2 Berlusconi:2 Prodi:2 Veltroni:1 Casini:1
43 Esempio Sessione Client in Parallelo fujim5 [~/java/votazionecallback/client] -> java VotazioneClient fujim11 Berlusconi E stato votato:berlusconi:2 Berlusconi:2 Prodi:2 Veltroni:1 Casini:1 Terza votazione: fujim8 [~/java/votazionecallback/client] -> java VotazioneClient fujim11 Veltroni E stato votato:veltroni:2 E stato votato:veltroni:3 E stato votato:berlusconi:3 Berlusconi:3 Veltroni:3 Prodi:2 Casini:1 fujim9 [~/java/votazionecallback/client] -> java VotazioneClient fujim11 Veltroni E stato votato:veltroni:3 E stato votato:berlusconi:3 Berlusconi:3 Veltroni:3 Prodi:2 Casini:1 fujim5 [~/java/votazionecallback/client] -> java VotazioneClient fujim11 Berlusconi E stato votato:berlusconi:3 Berlusconi:3 \\ Veltroni:3 \\ Prodi:2 \\ Casini:1
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)
DettagliCorso 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
DettagliLezione 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
DettagliCompute 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
DettagliLezione 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
DettagliIntroduzione 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
DettagliRMI. 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
DettagliClasspath e Esercizi su RMI
Classpath e Esercizi su RMI Esercitazione di Laboratorio di Programmazione di Rete A Daniele Sgandurra Università di Pisa 26/11/2008 Classpath Quando si avvia l interprete, esso deve localizzare le classi
DettagliRMI 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
DettagliProgrammazione 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
DettagliCompute 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
DettagliRMI: 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
DettagliProgrammazione 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
DettagliOrganizzazione 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
DettagliContesto 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
DettagliOrganizzazione della lezione. 15. Java Remote Method Invocation (3) Lo schema del Factory Design Pattern - 1. Factory design pattern
Organizzazione della lezione 15. Java Remote Method Invocation (3) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Il design pattern
DettagliMinMax a Java Distributed Application SISTEMI DISTRIBUITI Fabrizio G. Ventola
MinMax a Java Distributed Application SISTEMI DISTRIBUITI Fabrizio G. Ventola CdL Magistrale Informatica 2012/2013 Introduzione Uno degli obiettivi dell informatica moderna è quello di offrire servizi
DettagliRMI. 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
DettagliActivation 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
DettagliLaboratorio di Sistemi Distribuiti Leonardo Mariani
Laboratorio di Sistemi Distribuiti Leonardo Mariani ELECTION ALGORITHMS In molti sistemi distribuiti un processo deve agire da (o svolgere un ruolo particolare) per gli altri processi. Spesso non è importante
DettagliOggetti 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
DettagliProgrammazione di sistemi distribuiti
Programmazione di sistemi distribuiti I Sistemi Distribuiti, per loro natura, prevedono che computazioni differenti possano essere eseguite su VM differenti, possibilmente su host differenti, comunicanti
DettagliComunicazione fra oggetti distribuiti
Comunicazione fra oggetti distribuiti RMI RPC invocazione di metodo remoto - gli oggetti remoti ricevono le RMI interfaccia remota meccanismo per la comunicazione cliente servente come primitiva di un
DettagliJava 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
DettagliFirewall. RMI e Firewall
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
DettagliRemote 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
DettagliJava 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
DettagliJava 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
DettagliProgrammazione di reti Corso B. 22 Novembre 2016 Lezione 9
Programmazione di reti Corso B 22 Novembre 2016 Lezione 9 Eccezione ECHO server NIO if (key.isreadable()){ try{ SocketChannel channel= (SocketChannel) key.channel(); ByteBuffer[] bfs = (ByteBuffer[]) key.attachment();
DettagliJava 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)
DettagliEsercitazione 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
DettagliSistemi Distribuiti Multiagente A.A.2010-11 Informatica Magistrale Università di Bari
Java RMI I lucidi che seguono sono stati prodotti sulla base dei seguenti riferimenti: - Sistemi Distribuiti Dip. Informatica (S.Pizzutilo) - Seminario Java RMI di G.Cozzolongo Java RMI: Remote Method
DettagliRegistri RMI. Massimo Merro Univ. Verona Programmazione di Rete 90 / 247
Registri RMI Per poter interagire con un server remoto, un client deve essere in possesso di una sua referenza remota (ovvero un oggetto stub). Un servizio di Naming è una risorsa centralizzata che può
DettagliAgenti 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
DettagliSocket & 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
DettagliUnicastRemoteObject. Massimo Merro Programmazione di Rete 103 / 124
UnicastRemoteObject Java RMI fornisce diverse classi base per definire server remoti: UnicastRemoteObject < RemoteServer < RemoteObject dove A < B significa che A è una sottoclasse di B. UnicastRemotObject
DettagliRMI Remote Method Invocation
RMI Remote Method Invocation [Pagina intenzionalmente vuota] (1 12 2004) slide 4:1/18 (p.106) Un applicazione RMI è un applicazione distribuita ad oggetti. Applicazione RMI tipica, strutturata in: server:
DettagliEsercitazione 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
DettagliLaboratorio di Reti Lezione 10 RMI: Callbacks, Code Mobility. 29/11/2016 Laura Ricci
Laboratorio di Reti Lezione 10 : 29/11/2016 Laura Ricci Laura Ricci 1 IL MECCANISMO DELLE CALLBACK Il meccanismo delle callback consente di realizzare il pattern Observer in ambiente distribuito, utile
DettagliINFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002.
INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002 Esercizio 4) import fiji.io.simplereader; class Programma{ public static
DettagliRemote 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
DettagliMobilità 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
DettagliGli EJB offrono vari vantaggi allo sviluppatore di una applicazione
Gli EJB offrono vari vantaggi allo sviluppatore di una applicazione Un ambiente di esecuzione che gestisce o naming di oggetti, sicurezza, concorrenza, transazioni, persistenza, distribuzione oggetti (location
DettagliSistemi Distribuiti. Anno Accademico 2005-06 Prof. Flavio De Paoli. Il modello ad oggetti
Sistemi Distribuiti Anno Accademico 2005-06 Prof. Flavio De Paoli 1 Il modello ad oggetti 2 Distributed Objects 2-16 Common organization of a remote object with client-side proxy. 3 Caratteristiche Oggetti
DettagliEsempi in Java di program.ne O-O
Esempi in Java di program.ne O-O Ereditarietà Polimorfismo statico e dinamico Esercitazione laboratorio Interfaccia Comparable e Comparator 1 Gerarchia di ereditarietà Persona IS_A Docente Studente Tecnico
DettagliJava e Serializzazione dalla A all'xml di Leonardo Puleggi
dalla A all'xml di Leonardo Puleggi Indice generale Introduzione2 Grafo di Riferimenti 4 Attributi Transient.. 6 Metodi writeobject e readobject... 7 Ereditarietà e Serializzazione...10 Serializzazione
DettagliSCD. 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
DettagliSAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica
SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Esercitazioni di PROGETTAZIONE DEL SOFTWARE (Corsi di Laurea in Ingegneria Informatica ed Automatica ed Ingegneria
DettagliLinguaggi di Programmazione: Paradigmi di Programmazione
Linguaggi di Programmazione: Paradigmi di Programmazione Socket, Servlet e Remote Method Invocation Matteo Baldoni Dipartimento di Informatica - Universita` degli Studi di Torino C.so Svizzera, 185 - I-10149
DettagliIngegneria del Software
Ingegneria del Software Java Relazioni Associazioni 1 Associazione Uno a Zero-Uno Un esempio Un autovettura ha al più un proprietario 0..1 Dato il verso di navigazione specificato è necessario avere una
DettagliEsercizi della lezione 5 di Java
Esercizi della lezione 5 di Java Esercizio 5 Create il tipo di dato Counter dell Esercizio 1 come sottoclasse del tipo di dato SimpleCounter. Esercizio 1 Create un tipo di dato Counter che abbia: un valore
DettagliEsempio: Interfacce. Gioco Interfacce
Esempio: Interfacce 1 Descrizione Si supponga di avere delle carte da gioco. Ogni carta rappresenta un Personaggio che può essere di tipo o Umano o Mostro. Un Personaggio di tipo Umano ha una forza fisica
DettagliIl problema è trovare un modo nel quale gli eventi dell oggetto di riferimento, siano comunicati a tutti gli altri interessati.
Observer 129 19. Observer (GoF pag. 293) 19.1. Descrizione Consente la definizione di associazioni di dipendenza di molti oggetti verso di uno, in modo che se quest ultimo cambia il suo stato, tutti gli
DettagliEsempio: Interfacce. Gioco Interfacce
Esempio: Interfacce 1 Descrizione Si supponga di avere delle carte da gioco. Ogni carta rappresenta un Personaggio che può essere di tipo o Umano o Mostro. Un Personaggio di tipo Umano ha una forza fisica
DettagliConcorrenza 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
DettagliParcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento
Parcheggio.rtf 1/8 6 gennaio 2009 Prova di programmazione: parcheggio a pagamento Si sviluppi il codice per la gestione di un parcheggio a pagamento mediante la classe Parcheggio, che ospita le auto rappresentate
DettagliLA PROGRAMMAZIONE RMI
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI RETI DI CALCOLATORI Linguaggio Java: Remote Method Invocation Prof. Franco Zambonelli A.A. 2005-2006 LA PROGRAMMAZIONE
DettagliMultithreading. 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
DettagliPolimorfismo parametrico vs polimorfismo per inclusione
Polimorfismo parametrico vs polimorfismo per inclusione Esercizio Definire il tipo di dato Stack con operazioni Push( element ) Pop() Non forzare una specifica implementazione Non forzare un tipo specifico
Dettagli18 - Classi parzialmente definite: Classi Astratte e Interfacce
18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
DettagliRMI Remote Method Invocation. da materiale di Carlo Ghezzi e Alfredo Motta
RMI Remote Method Invocation da materiale di Carlo Ghezzi e Alfredo Motta L idea alla base di tutta la programmazione distribuita è semplice Un client esegue una determinata richiesta Tale richiesta viaggia
DettagliMultithreading 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)
DettagliFondamenti di Informatica L-B Esercitazione n 5 Java: Interfaccia Comparable, Array
Fondamenti di Informatica L-B Esercitazione n 5 Java: Interfaccia Comparable, Array A.A. 2007/08 Tutor: Barbara Pettazzoni barbara.pettazzoni@studio.unibo.it Interfaccia Comparable L altra volta abbiamo
DettagliUn esercizio d esame. Flavio De Paoli
Un esercizio d esame e note sulla gestione dei dati Flavio De Paoli Il testo (Appello 22 ottobre 2001) Una stazione di servizio dispone di n distributori di benzina. I clienti si presentano a uno dei distributori
DettagliLinguaggi di programmazione II AA 2010/2011 Esercitazione 2
Linguaggi di programmazione II AA 2010/2011 Esercitazione 2 1) Scrivere l'output del seguente programma Java public class Bean private String str; Bean(String str ) this.str = str; public String tostring()
DettagliIntroduzione Programmazione Java
Introduzione Programmazione Java Paolo Tomeo paolo.tomeo@poliba.it Regole basilari Java è case sensitive quindi prestare attenzione alle maiuscole Il commento si inserisce con // all'inizio della linea
DettagliProgrammazione orientata agli oggetti La classe Object, metodi e classi final, this. Object
Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza
DettagliEsercitazione 15. Il problema dello Sleeping Barber
Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002 Sistemi Operativi Corsi A e B Esercitazione 15 Il problema dello Sleeping Barber E dato un salone di barbiere,
Dettagli/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }
import java.util.*; class coda * Questa classe contiene tutti i metodi per la gestione della coda * @author D'Ambrosio Giovanni Classe 4D I.T.I.S. Grottaminarda * @version 26/02/2010 * VETTORE DINAMICO
DettagliProgrammazione ad Oggetti. Java Parte II
Programmazione ad Oggetti Java Parte II Overview Caratteristiche lessicali Il primo programma Java 1 Commenti /* Commento tradizionale, eventualmente su più linee, non nidificato */ // Commento su di una
DettagliInternet Socket e RMI
Internet Socket e RMI Programmazione in Rete e Laboratorio Architettura / Un servizio presso un computer-server è identificato dai seguenti valori: IP (32 bit, presto 128 bit) (16 bit) Servizi telnet TCP
DettagliRiassunto. I mattoni di base di un programma Java. Oggi. Un programma complicato. Oggi. Perché è complicato? Stefano Mizzaro 1.
I mattoni di base di un programma Java Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione, lezione 2 28 settembre
DettagliProgrammazione 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
DettagliInternet Socket e RMI
Internet Socket e RMI una breve introduzione alla programmazione in rete Chi sono? Come contattarmi? Matteo Baldoni Dipartimento di Informatica Università degli Studi di Torino Corso Svizzera, 185 I-10149
DettagliGESTIONE DEI PROCESSI
Sistemi Operativi GESTIONE DEI PROCESSI Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in Java Concetto
DettagliInternet Socket e RMI
Internet Socket e RMI una breve introduzione alla programmazione in rete Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149 Torino baldoni@di.unito.it
DettagliEsercitazione. Docente Ing. Mariateresa Celardo
Esercitazione Docente Ing. Mariateresa Celardo mariateresa.celardo@uniroma2.it Scrivere la classe Motorino che ha i seguenti attributi colore: una stringa indicante il colore del motorino, velocità: un
DettagliLaboratorio di Programmazione di Rete Corso A
Laboratorio di Programmazione di Rete Corso A Anno Accademico 2005-2006 Docente: Laura Ricci Assistente: Paolo Mori INFORMAZIONI UTILI Orario del Corso: Lunedì 9.00-11.00 Laboratorio Gruppo A 11.00-13.00
DettagliIl linguaggio Java. Oggetto remoto. Remote Method Invocation (RMI) Oggetto remoto: oggetto i cui metodi possono essere invocati attraverso la rete
Il linguaggio Java Remote Method Invocation (RMI) Oggetto remoto Oggetto remoto: oggetto i cui metodi possono essere invocati attraverso la rete Client Server 2 Schema di principio oggetto client oggetto
DettagliI 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
DettagliLa concorrenza in Java package java.util.concurrent Antonio Furone
La concorrenza in Java package java.util.concurrent Antonio Furone Coda Bloccante La classe LinkedTransferQueue è stata esplicitamente disegnata per dare supporto a problemi di tipo produttore/consumatore.
DettagliCorso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010
Esercizio 1. Si deve modellare con una classe Java il contenuto di un portamonete, con delle opportune semplificazioni. Le monete da considerare sono di soli 4 tagli: 10, 20, 50 e 100 centesimi (cioè 1
DettagliGestione dei thread in Java LSO 2008
Gestione dei thread in Java LSO 2008 Cos è un Thread? Si può avere la necessità di suddividere un programma in sottoattività separate da eseguire indipendentemente l una dall altra Queste sottoattività
DettagliMetodi statici. Dichiarazione e chiamata di metodi statici
Metodi statici Dichiarazione e chiamata di metodi statici Cos è un metodo Un metodo è un blocco di istruzioni che fornisce una funzionalità e viene identificato con un nome Può avere dei parametri ed un
DettagliCORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity
CORSO DI ALGORITMI E PROGRAMMAZIONE JDBC Java DataBase Connectivity Anno Accademico 2002-2003 Accesso remoto al DB Istruzioni SQL Rete DataBase Utente Host client Server di DataBase Host server Accesso
DettagliIl 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
DettagliScrivere il codice del compareto in modo tale che confronti due Studenti per età e a parità di questa per matricola
Domanda 1 Scrivere il codice del compareto in modo tale che confronti due Studenti per età e a parità di questa per matricola class Studente implements Comparable { private String matricola;
DettagliProgrammazione distribuita in Java. Socket & Client-Server
Programmazione distribuita in Java Socket & Client-Server 1 Strumenti per networking Libreria java.net Socket (Astrazione per una presa di comunicazione) Serializzazione Socket Per comunicare si apre una
DettagliDatagrammi. NOTA: MulticastSocket estende DatagramSocket
Datagrammi Le applicazioni che comunicano tramite socket possiedono un canale di comunicazione dedicato. Per comunicare, un client ed un server stabiliscono una connessione, trasmettono dati, quindi chiudono
Dettaglidomenica 9 giugno 13 Serializzazione
Serializzazione A cosa serve? Ad ottenere una rappresentazione di una struttura dati che possiamo memorizzare, trasmettere via rete Cosa possiamo serializzare? OK NO Tipi primitivi, Riferimenti stringhe
DettagliCorso di Reti di Calcolatori
Corso di Reti di Calcolatori UNICAL Facoltà di Ingegneria a.a. 2002/2003 Esercitazione sul networking in Java (3 a parte) e comandi di rete paolo.trunfio@deis.unical.it 1 Datagrammi Le applicazioni che
DettagliCOMPITO DI LABORATORIO DI PROGRAMMAZIONE Dicembre 2001
COMPITO DI LABORATORIO DI PROGRAMMAZIONE 2001-2002 10 Dicembre 2001 NOME COGNOME MATRICOLA Scrivere in stampatello Nome, Cognome e Matricola su ogni foglio consegnato. ESERCIZIO 1. Si consideri il seguente
DettagliLaboratorio di Programmazione Lezione 2. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]
DettagliCorso di Reti di Calcolatori. Datagrammi
Corso di Reti di Calcolatori UNICAL Facoltà di Ingegneria a.a. 2002/2003 Esercitazione sul networking in Java (3 a parte) e comandi di rete paolo.trunfio@deis.unical.it 1 Datagrammi Le applicazioni che
Dettaglise invoco un metodo di Object che è ridefinito in Point, viene invocato il metodo definito in Point
Gli HashSet Tipo predefinito che rappresenta insiemi di Object Cosa succede se... Posso mettere un riferimento a un Point in una variabile Object Object o=new Point(12,3); è quasi tutto come se l oggetto
DettagliUniversità degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002. Sistemi Operativi Corsi A e B. Esercitazioni 7 e 8
Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002 Corsi A e B Esercitazioni 7 e 8 Bounded Buffer con sincronizzazione Java (1) public class BoundedBuffer private
DettagliLaboratorio di Programmazione 1 [Java]
Laboratorio di Programmazione 1 [Java] Prova di esame - 26 Gennaio 2011 Tempo massimo: 50 minuti Si implementino in Java le classi Tavolo e Pizzeria. La classe Tavolo ha i seguenti attributi: nome (una
DettagliBank. Bank. BankAccount. Bank. Bank. private BankAccount[] conti; // Posizione attuale private int posizioneattuale;...
Bank BankAccount Bank Bank Bank BankAccount private BankAccount[] conti; // Posizione attuale private int posizioneattuale;... Bank Bank public Bank(String nome, String internationalcode, int dimensione)
DettagliProgrammazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012
Programmazione a oggetti e JAVA Prof. B.Buttarazzi A.A. 2011/2012 Sommario Variabili statiche Ereditarietà multipla Le interfacce Binding Esercizi Esercizio ContoCorrente Creare una classe ContoCorrente
Dettagli