Organizzazione della lezione. Organizzazione della lezione. 14. Java Remote Method Invocation (2) La sicurezza in Java
|
|
- Agnello Elia
- 6 anni fa
- Visualizzazioni
Transcript
1 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 sicurezza in Java Creazione di oggetti remoti che derivano da una superclasse Istanziazione di un registry interno all oggetto Download dinamico di classi in 2 Organizzazione della lezione La sicurezza in Java Il modello della sicurezza in Java Creazione di oggetti remoti che derivano da una superclasse Istanziazione di un registry interno all oggetto Download dinamico di classi in Il problema nasce dalla caratteristica di Java di essere distribuito potendo eseguire classi scaricate dalla rete, non si può essere sicuri della loro inoffensività La soluzione di Java i programmi vengono eseguiti in una sandbox Il SecurityManager viene usato per controllare i permessi forniti dall utente al programma 3 4
2 La evoluzione delle politiche di security: JDK 1.0 In JDK 1.0 la unica differenza era tra codice locale e remoto La evoluzione delle politiche di security: JDK 1.1 In JDK 1.1 vengono introdotti gli applet firmati remoto 5 6 La evoluzione delle politiche di security: JDK 1.2 e successive In JDK 1.2 viene introdotta la policy per dominio 7 Le politiche di sicurezza Vengono enumerate da Sun i modi in cui è possibile uscire dalla sandbox I permessi vengono memorizzati in file di policy definiscono le restrizioni imposte dalla sandbox A livello sistema (nella home di Java Runtime Environment).../jre/lib/security/java.policy A livello utente.../userhome/.java.policy A livello programma java -Djava.security.policy=policyfile appname 8
3 Il Security Manager Istallare un SecurityManager Implementa una politica di sicurezza permettendo la esecuzione in una sandbox Esempio: la delete di un file può essere illegale Il Security Manager viene interpellato dall interprete per ogni azione potenzialmente pericolosa. Necessario istallare un Security Manager dal codice dalla linea di comando java -Djava.security.manager rmiregistry (e rmid per la activation) istallano dei SecurityManager con policy di default Formato dei permessi nei file di policy: grant [signedby Name] [codebase URL] { // lista dei permessi ; 9 10 La politica di default La politica di default All interno di jre/lib/security il file java.policy All interno di jre/lib/security il file java.policy grant codebase "file:${java.home/lib/ext/*" { permission java.security.allpermission; ; grant { // Thread possono fermare se stessi con java.lang.thread.stop() permission java.lang.runtimepermission "stopthread"; // listen su porte non di root permission java.net.socketpermission "localhost:1024-", "listen"; // proprieta di sistema leggibili permission java.util.propertypermission "java.version", "read"; permission java.util.propertypermission "java.vendor", "read"; permission java.util.propertypermission "java.vendor.url", "read"; permission java.util.propertypermission "java.class.version", "read"; permission java.util.propertypermission "os.name", "read"; permission java.util.propertypermission "os.version", "read"; permission java.util.propertypermission "os.arch", "read"; permission java.util.propertypermission "file.separator", "read"; permission java.util.propertypermission "path.separator", "read"; permission java.util.propertypermission "line.separator", "read"; // continua 11 // continua permission java.util.propertypermission "java.specification.version", "read"; permission java.util.propertypermission "java.specification.vendor", "read"; permission java.util.propertypermission "java.specification.name", "read"; permission java.util.propertypermission "java.vm.specification.version", "read"; permission java.util.propertypermission "java.vm.specification.vendor", "read"; permission java.util.propertypermission "java.vm.specification.name", "read"; permission java.util.propertypermission "java.vm.version", "read"; permission java.util.propertypermission "java.vm.vendor", "read"; permission java.util.propertypermission "java.vm.name", "read"; ; 12
4 Un tool: policytool Organizzazione della lezione Permette di gestire con facilità i file di permessi Il modello della sicurezza in Java Creazione di oggetti remoti che derivano da una superclasse Istanziazione di un registry interno all oggetto Download dinamico di classi in Come dichiarare un oggetto remoto Un esempio: RemoteCounter Per poter usare un oggetto deve: ereditare da UnicastRemoteObject implementare la interfaccia dei servizi offerti Cosa accade se la nostra classe deve ereditare da qualche altra classe? Si possono utilizzare dei metodi statici offerti da UnicastRemoteObject per rendere l oggetto utilizzabile da remoto attraverso il metodo UnicastRemoteObject.exportObject() tipicamente, nel costruttore che deve lanciare una eccezione RemoteException 15 Classe LocalCounter: classe locale con alcuni metodi e variabili di istanza Classe RemoteCounter: che eredita da LocalCounter e implementa la interface Counter dei cui metodi offre la implementazione aggiungendo anche alcuni metodi locali Classi di supporto CounterClient: per incrementare di un certo valore (fornito su linea di comando) il contatore remoto CounterServer: per istanziare l oggetto remoto offre anche una semplice shell di interrogazione 16
5 Il diagramma di RemoteCount La interface remote: Counter.java 17 import java.rmi.remote; import java.rmi.remoteexception; public interface Counter extends Remote { int getvalue() throws RemoteException; void sum(int valore) throws RemoteException; int increment() throws RemoteException; Tre metodi da implementare per l accesso remoto getvalue() preleva il valore eccezione remota sum() aggiunge il valore indicato increment() incrementa il contatore di 1 18 Il diagramma di RemoteCount La classe locale: LocalCounter.java public class LocalCounter { public LocalCounter(int v) { value = v; public int localgetvalue() { return value; // variabili di istanza int value; Semplice esempio Costruttore inizializzazione Offre un metodo (locale) per prelevare il valore Variabile di istanza 19 20
6 Il diagramma di RemoteCount La classe locale: RemoteCounter.java (1) import java.rmi.*; import java.rmi..*; public class RemoteCounter extends LocalCounter implements Counter { public RemoteCounter(String n, int v) throws RemoteException { super (v); name = n; UnicastRemoteObject.exportObject(this); try { Naming.rebind(name,this); catch (Exception e) {System.out.println ("Eccezione:"+e); // continua. Estende la classe locale e implementa la interface Costruttore costruttore superclasse inizializzazione esportazione oggetto remoto rebind La classe locale: RemoteCounter.java (2) Il diagramma di RemoteCount // continua public int getvalue() throws RemoteException { return value; public void sum (int valore) throws RemoteException { value += valore; public int increment() throws RemoteException { sum (1); return value; public String getname() { return name; String name; Metodi remoti getvalue() sum() increment() Metode locale getname() Variabile istanza 23 24
7 La classe : CounterServer.java (1) La classe : CounterServer.java (2) import java.util.*; import java.io.*; import java.rmi.*; import java.rmi..*; public class CounterServer { public static void main (String args[]) { BufferedReader in=null; String cmd; if (System.getSecurityManager() == null) System.setSecurityManager(new SecurityManager()); try { RemoteCounter cont = new RemoteCounter ("Contatore",0); System.out.println ("Pronto!"); in = new BufferedReader(new InputStreamReader(System.in)); // continua Offre una shell di comandi locali Solo il metodo main() Installazione SM Creazione oggetto remoto Apertura Stream per input 25 while (true) { System.out.print("Comandi >"); cmd = in.readline(); if (cmd.equals ("close")) System.exit(0); else if (cmd.equals ("localgetvalue")) System.out.println ( cont.localgetvalue()); else if (cmd.equals ("getname")) System.out.println ( cont.getname()); else if (cmd.equals("increment")) System.out.println (cont.increment()); else System.out.println (ERRORMSG); // end while catch (Exception e) { System.out.println("Ecc."+e); static final String ERRORMSG = "Uhh?"; Lettura comando Esecuzione metodi locali ereditati da LocalCounter: localgetvalue() locali: getname() remoti: increment() Costante per messaggio di errore 26 Il diagramma di RemoteCount La classe : CounterClient.java 27 import java.rmi.*; import java.rmi.registry.*; import java.rmi..*; public class CounterClient { public static void main (String args[ ]) { String host = "localhost"; if (System.getSecurityManager() == null) System.setSecurityManager(new SecurityManager()); if (args.length == 2) host = args[1]; try { Counter cont = (Counter) Naming.lookup("rmi://"+host+"/Contatore"); int limite=integer.parseint(args[0]); for (int i=0; i<limite; i++) cont.increment(); System.out.println ("Tot="+cont.getValue()); catch (Exception e) { System.out.println("Eccezione"+e); Chiama l incremento args[0] volte Installazione SM Riferimento remoto Chiamata di increment() Chiamata di getvalue() 28
8 Organizzazione della lezione Istanziazione di un registry dall interno Il modello della sicurezza in Java Creazione di oggetti remoti che derivano da una superclasse Istanziazione di un registry interno all oggetto Download dinamico di classi in E possibile istanziare un registry dall interno di un programma utile per evitare la partenza del servizio di naming da shell indispensabile (come vedremo) per usare socket particolari Facciamo un esempio: esempio Hello (lezione precedente) unica modifica necessaria sul HelloImpl che deve creare un oggetto di tipo registry ottenerne il riferimento per poter fare il bind dell oggetto Il diagramma di RemoteHello La interface remota dell'oggetto: il file Hello.java package hello; public interface Hello extends java.rmi.remote { String dimmiqualcosa(string dachi) throws java.rmi.remoteexception; Dichiarazione di package Interface eredita da java.rmi.remote Metodo dimmiqualcosa dichiarato Lancia RemoteException 31 32
9 La implementazione dell'oggetto remoto: il file HelloImpl.java (1) package hello; import java.rmi.*; import java.rmi..unicastremoteobject; import java.rmi.registry.*; public class HelloImpl extends UnicastRemoteObject implements Hello { public HelloImpl() throws java.rmi.remoteexception { public String dimmiqualcosa(string dachi) throws RemoteException { System.out.println("Saluto "+dachi); return "Ciao "+dachi+"!"; // continua Identico alla precedente tranne: import di registry Il costruttore (vuoto) dell'oggetto remoto con chiamata implicita al costruttore della superclasse Implementazione del metodo remoto 33 La implementazione dell'oggetto remoto: il file HelloImpl.java (2) // continua public static void main(string args[]) { System.setSecurityManager(new SecurityManager()); try { HelloImpl obj = new HelloImpl(); LocateRegistry.createRegistry(1099); Registry registry = LocateRegistry.getRegistry(1099); registry.rebind("helloserver", obj); System.out.println("Pronto!"); catch (Exception e) { e.printstacktrace(); // end main // end classe HelloImpl Crea ed installa un security manager utile per poter caricare classi dinamicamente se non sono presenti sul CLASSPATH crea una istanza di oggetto remoto obj Differenza: crea un registry su porta 1099 ottiene un riferimento fa il rebind() era semplicemente Naming.rebind("HelloServer", obj); 34 Esecuzione di Hello Organizzazione della lezione Sulla macchina del (host): non necessario lanciare il registry sulla porta di default 1099 lanciare il programma con la policy: java -Djava.security.policy=policyall hello.helloimpl Sulla macchina del : lanciare il programma : java hello.helloclient host Topolino Il modello della sicurezza in Java Creazione di oggetti remoti che derivano da una superclasse Istanziazione di un registry interno all oggetto Download dinamico di classi in 35 36
10 Download dinamico di classi Codebase e Tra le capacità particolari di Java quella di permettere il caricamento a run-time delle classi necessarie, dovunque esse si trovino (su host locale oppure tramite una URL Tipicamente: un ClassLoader per la JVM deve conoscere le possibili locazioni delle classi da caricare Codebase una sorgente di classi da cui caricare tipicamente, in locale, settato al CLASSPATH (variabile di ambiente) 37 In generale, è necessario indicare alle classi come poter accedere (anche remotamente) alla classe stub dell oggetto di cui vuole usare i servizi (metodi) In generale: possibile indicare una URL che specifichi dove si trova la classe indicata usato di solito con un HTTP o FTP che svolga questo compito Uso del codebase: java -Djava.rmi..codebase= class 38 Caricamento dinamico delle classi Lo scenario 1: la sequenza di azioni (1) Due scenari diversi 1. il deve poter indicare al dove si trova lo stub che si incaricherà delle comunicazioni con sé stesso 2. il effettua una chiamata remota ad un metodo passando un oggetto la cui classe è sconosciuta al (ma ovviamente è sottoclasse della classe del parametro del metodo del ) registry 1. bind java -Djava.rmi..codebase=http//s_host 39 40
11 Lo scenario 1: la sequenza di azioni (2) Lo scenario 1: la sequenza di azioni (3) registry 1. bind il registry annota la definizione della URL per la classe e carica la definizione della classe 2. Naming.lookup 3. reference remota (con il codebase) registry 1. bind Lo scenario 1: la sequenza di azioni (4) Lo scenario 1: la sequenza di azioni (5) 5. stub restituito 2. Naming.lookup 3. reference remota (con il codebase) 4. richiesta stub registry 1. bind 5. stub restituito 2. Naming.lookup 3. reference remota (con il codebase) 4. richiesta stub registry 6. chiamata remota 1. bind 43 44
12 Caricamento dinamico delle classi I parametri passati a metodi remoti Due scenari diversi Tre possibilità 1. il deve poter indicare al dove si trova lo stub che si incaricherà delle comunicazioni con sé stesso 2. il effettua una chiamata remota ad un metodo passando un oggetto la cui classe è sconosciuta al (ma ovviamente è sottoclasse della classe del parametro del metodo del ) tipi di dati primitivi il conosce come interpretarli oggetti la cui classe si trova nel CLASSPATH del il conosce come interpretarli oggetti la cui classe non si trova nel CLASSPATH del il parametro era per un oggetto della classe A, ma viene passato un oggetto della classe B, sottoclasse di A, che risulta sconosciuta dal necessario che il la possa reperire Lo scenario 2: la sequenza di azioni (1) Lo scenario 2: la sequenza di azioni (2) java -Djava.rmi..codebase=http//c_host il ha la definizione della sottoclasse su un chiamata remota in cui l argomento è una sottoclasse non nota al il ha la definizione della sottoclasse su un chiamata remota in cui l argomento è una sottoclasse non nota al il accede alla definizione della sottoclasse 47 48
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
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
DettagliOrganizzazione 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
DettagliOrganizzazione 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
DettagliEsercitazione 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
Dettagli16. 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
DettagliOrganizzazione 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
DettagliOrganizzazione 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
DettagliOrganizzazione 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
DettagliOrganizzazione 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
DettagliPROVA FINALE Ingegneria del software
PROVA FINALE Ingegneria del software Ing. Jody Marca jody.marca@polimi.it Laboratorio N 6 Cosa faremo oggi 2 Comunicazione RMI Comunicazione RMI Multi-Thread Remote Method Invocation 3 L obiettivo è di
DettagliCorso 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
DettagliArchitetture 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
DettagliLPR 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
Dettagli12. Java: Remote Method Invocation (3)
12. Java: Remote Method Invocation (3) Vittorio Scarano Algoritmi e Strutture Dati: Sistemi Distribuiti Corso di Laurea in Informatica Università degli Studi di Salerno Organizzazione della lezione Il
Dettagli15. Java Remote Method Invocation (3)
15. Java Remote Method Invocation (3) Vittorio Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione Programmazione Distribuita.
DettagliASD: Sistemi Distribuiti (Prof. Scarano) 20/05/2002
Organizzazione della lezione 12. Java: Remote Method Invocation (3) Vittorio Scarano Algoritmi e Strutture Dati: Sistemi Distribuiti Corso di Laurea in Informatica Università degli Studi di Salerno Il
Dettagli10. 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.
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
DettagliOrganizzazione della lezione. Lezione 15 Remote Method Invocation - 3. Lo schema del Factory Design Pattern - 1. Factory design pattern
Organizzazione della lezione Lezione 15 Remote Method Invocation - 3 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno
DettagliOrganizzazione 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:
DettagliLaurea 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:
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
DettagliObiettivo 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
DettagliEsercizi 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
DettagliOrganizzazione della lezione. 18. Applicazioni ed Esempi (2) II prova intercorso. Prove scritte degli esami successivi
Organizzazione della lezione 18. Applicazioni ed Esempi (2) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della
Dettagli18. Applicazioni ed Esempi (2)
18. Applicazioni ed Esempi (2) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione Organizzazione della
DettagliCorso 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
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
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
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
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
DettagliEccezioni. 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
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
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
Dettagli7 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)
DettagliSicurezza in Java. Evoluzione dei modelli di sicurezza in Java Architettura di autorizzazione nel JDK 1.2
Sicurezza in Java Evoluzione dei modelli di sicurezza in Java Architettura di autorizzazione nel JDK 1.2 1 Java Virtual Machine Loading Linking Initializing Verification Preparation Resolution caricamento
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[]
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
DettagliLezione 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
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
DettagliGESTIONE 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
DettagliGESTIONE 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
Dettagli19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso
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
DettagliCorso 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
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
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
DettagliOrganizzazione della II prova intercorso ed esami. L accesso al registry per il rebind() Una soluzione con registry multipli Alcuni commenti finali
Organizzazione della lezione 18. Applicazioni ed Esempi (2) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della
DettagliGerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1
Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1 Gerarchia delle classi Una sottoclasse eredita metodi, variabili, etc. dalla superclasse... Per
DettagliCorso 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
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
DettagliFONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria CORSO DI FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni Prof. Zambonelli, Ing. Cabri, Ing. Denti, Ing. Andrea Aime Zambonelli,
DettagliVittorio Scarano. Università degli Studi di Salerno. Lezione 23 Enterprise JavaBeans (8)
Lezione 23 Enterprise JavaBeans (8) Vittorio Scarano Corso di Sistemi Distribuiti (2003-2004) Laurea Specialistica in Informatica Università degli Studi di Salerno Obiettivo della lezione Presentare le
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
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
DettagliProva d Esame Compito A
Prova d Esame 19.04.2005 Compito A Domanda 1 A) Si richiede di analizzare le seguenti sezioni di codice. Il candidato indichi il risultato dell esecuzione del main. public class Father { private int counter;
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
DettagliRETI DI CALCOLATORI Linguaggio Java: Eccezioni
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI RETI DI CALCOLATORI Linguaggio Java: Eccezioni Prof. Franco Zambonelli Lucidi realizzati in collaborazione
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
DettagliEsercizi 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
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
DettagliJAVA - I/O System. Il JAVA considera tutte i flussi da e verso l esterno, come stream di byte. Questi possono essere di ingresso o di uscita:
JAVA - I/O System Il JAVA considera tutte i flussi da e verso l esterno, come stream di byte. Questi possono essere di ingresso o di uscita: 1. InputStream: Flusso di byte in ingresso. Con questa classe
DettagliEccezioni e Thread (cenni)
Eccezioni e Thread (cenni) Linguaggi di Programmazione: Paradigmi di Programmazione (Sperimentazioni) Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149
DettagliLezione 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:
DettagliSCD. 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
DettagliLezione 5 Namespace e JavaDoc
Lezione 5 Namespace e JavaDoc Vittorio Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione Il namespace di Java: i package
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
DettagliPrincipi, 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
DettagliLe basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
DettagliCorso 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
DettagliFondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Eccezioni Categorie di eccezioni checked unchecked Gestione delle eccezioni Clausola throws Costrutto try - catch - finally Comando
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
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
Dettagli{4, 4, 2, 9, 13} {2, 2, 9, 13, 0} {0, 4, 2, 9, 13} {2, 9, 13, 0, 0}
16181 Nome Cognome A domande a risposta multipla con n scelte, la risposta corretta vale (n-1)/n*difficoltàdomanda, la risposta errata -1/n*difficoltà domanda, la risposta non data. Eseguendo il frammento
DettagliRMI 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
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
DettagliEsempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione e rimane immutato.
DettagliProgrammazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario Array Array monodimensionali Array bidimensionali Esercizi 16/01/2013 2 ARRAY Gli array sono oggetti utilizzati in Java per memorizzare
DettagliInizializzare oggetti
Inizializzare oggetti Uso della Classe Software per TLC - AA 2008/2009 1 Costruttori e polimorfismo Uso della Classe Un codice migliore Software per TLC - AA 2008/2009 2 Costruttori ed Ereditarietà Output:
DettagliJava RMI. The Java Tutorial Trail su RMI https://docs.oracle.com/javase/tutorial/rmi/index.html
Luca Cabibbo Architettura dei Sistemi Software dispensa asw830 marzo 2018 These are my principles. If you don t like them, I have others. Groucho Marx 1 - Fonti Coulouris, G, Dollimore, J., Kindberg, T.,
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
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
DettagliEsercizi 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
DettagliFondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Files? Yes, Thanks!
Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 Files? Yes, Thanks! File in Java I concetti
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
DettagliSCD. 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
DettagliFiles? Yes, Thanks! Serializzazione di entità semplice. Meccanismi. Meccanismi. Meccanismi. Fondamenti di Informatica T2 Modulo 2
Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 Files? Yes, Thanks! File in Java I concetti
DettagliSCD. 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
DettagliAgent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A
Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Ingegneria del software A Input/output (in Java) Michele Tomaiuolo Eccezione Un eccezione è
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
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
DettagliEccezioni. 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
DettagliA. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas
Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),
Dettagli