Organizzazione della lezione. 15. Java Remote Method Invocation (3) Lo schema del Factory Design Pattern - 1. Factory design pattern
|
|
- Ladislao Garofalo
- 2 anni fa
- Visualizzazioni
Transcript
1 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 della factory in RMI Garbage collection distribuita Il logging dei metodi 2 Factory design pattern Lo schema del Factory Design Pattern - 1 Uno dei Design Patterns più comuni Una factory è un oggetto che controlla la creazione e/o l accesso ad oggetti Particolarmente utile in vari contesti: nel caso di oggetti remoti, permette la registrazione solamente della factory rendendo minimo l overhead di comunicazione con il registry permettendo il controllo (da parte del server) sul numero, tipo e qualità dei servizi offerti dal server 3 L oggetto Factory si registra sul registry Il Client ottiene un riferimento remoto alla Factory e chiede alla Factory di creare/dare accesso ad un oggetto Prodotto 4
2 Lo schema del Factory Design Pattern - 2 Alcuni requirements per RMI il cui riferimento remoto viene restituito al Client che può usarne i servizi Per usare il Factory Design Pattern in RMI sia la classe Factory che la classe Product devono avere una interfaccia remota che ne specifichi i servizi da usare da remoto Tra i servizi della Factory un metodo per avere un riferimento remoto di un Product Tra i servizi del Product i metodi per accedere ai servizi del Product 5 6 Un esempio per la Factory in RMI: RemoteHello Il solito servizio di saluto remoto Composto da una Factory di oggetti RemoteHello il cui riferimento viene passato al Client che può effettuare le chiamate richieste Due interface: una per specificare i servizi remoti offerti dalla Factory ottenere un riferimento remoto di un oggetto RemoteHello creato una per specificare i servizi remoti offerti da RemoteHello rispondere con una stringa di saluto 7 8
3 La interface remote: RemoteHello.java import java.rmi.remote; import java.rmi.remoteexception; /** * Interfaccia RemoteHello: la factory Vittorio Scarano /5/2002 */ public interface RemoteHello extends Remote { /** * Saluta il client, con il proprio nome * parola tringa inviata dal client una stringa di benvenuto! */ String dici(string parola) throws RemoteException; Import per uso delle interface Commenti per JavaDoc Unico metodo remoto lancia una eccezione remota 9 10 La interface remote: Factory.java import java.rmi.remote; import java.rmi.remoteexception; /** * Interfaccia per la factory di Remote Hello Vittorio Scarano 14 maggio /5/2002 */ public interface Factory extends Remote { Remote dammiremoto(string nomeremoto ) throws RemoteException; Import per uso delle interface Commenti per JavaDoc Unico metodo remoto restituisce un oggetto la classe implementa Remote lancia una eccezione remota 11 12
4 La factory: FactoryImpl.java (1) import java.rmi.*; import java.rmi.server.*; public class FactoryImpl extends UnicastRemoteObject implements Factory { /* args[0] e' l'host su cui creare factory */ public static void main (String args[]) { System.setSecurityManager (new RMISecurityManager()); try { FactoryImpl f = new FactoryImpl ( "FactoryRemoteHello", args[0]); catch (Exception e) {System.out.println ("Eccezione:"+e); System.out.println ("Pronto!"); // end main // continua Server per Factory comprende il main() Set SM Creazione di una FactoryImpl passando l host come parametro 13 La factory: FactoryImpl.java (2) public FactoryImpl (String nome, String h) throws RemoteException{ super(); host = h; try { Naming.rebind( "rmi://"+host+"/"+nome,this); catch (Exception e) {System.out.println ("Eccezione:"+e); // fine costruttore public Remote dammiremoto (String nomeremoto) throws RemoteException { RemoteHelloImpl rh = new RemoteHelloImpl("RemoteHello", host, nomeremoto); return rh.dammiremotereference(); private String host; Costruttore costruttore di UnicastRemoteObject Bind sul registry con il nome passato Metodo remoto factory: istanzia un RemoteHello con il nome passato dal client restituisce il suo riferimento remoto Variabile istanza: host Il servizio remoto: RemoteHelloImpl.java (1) import java.rmi.*; import java.rmi.server.unicastremoteobject; public class RemoteHelloImpl extends UnicastRemoteObject implements RemoteHello { public RemoteHelloImpl (String nome, String host, String id) throws RemoteException{ super(); try { Naming.rebind ("rmi://"+host+"/"+nome,this); myid = id; remotereference = Naming.lookup (nome); catch (Exception e) {System.out.println ("Ecc.:"+e); // fine costruttore continua Import per uso delle interface e superclasse Costruttore chiamata costruttore di UnicastRemoteObject bind sul registry setting delle variabili istanza id dato dal Client riferimento remoto 16
5 Il servizio remoto: RemoteHelloImpl.java (2) public String dici (String parola) throws RemoteException { System.out.println(myid+": Ricevuto "+ parola); return ("Sono "+myid+" e ti saluto!"); public Remote dammiremotereference() { return remotereference; private String myid; private Remote remotereference; Implementazione metodo remoto restituisce anche l id Metodo locale serve per la Factory per prelevare il riferimento remoto Variabili istanza stringa di ID riferimento remoto Il client: Client.java (1) Il funzionamento del programma import java.rmi.*; import java.rmi.registry.*; import java.rmi.server.*; public class Client { public static void main (String args[]) { System.setSecurityManager (new RMISecurityManager()); try { Factory fact = (Factory) Naming.lookup ( "rmi://"+args[0]+"/factoryremotehello"); RemoteHello hello = (RemoteHello) fact.dammiremoto(args[1]); System.out.println(hello.dici ( Ecco!")); catch (Exception e) { System.out.println("Eccezione"+e); Parametri del main host del Factory nome del client Set SM Ricerca della Factory Chiede un riferimento ad un oggetto di RemoteHello Chiama il metodo remoto 19 $ java FactoryImpl localhost Pronto! Pippo: ricevuto Ecco! RemoteHelloImpl riferimento FactoryImpl $ java Client localhost Pippo Sono Pippo e ti do il benvenuto $ dici( Ecco! ) dammiremoto() Client hello 20
6 Organizzazione della lezione La Garbage Collection Il design pattern della factory in RMI Due filosofie nei linguaggi di programmazione Garbage collection distribuita Il logging dei metodi La filosofia C: La gestione della memoria è troppo importante per essere gestita dal sistema La filosofia Smalltalk (e Java) La gestione della memoria è troppo importante per essere gestita dal programmatore Vediamo un esempio della garbage collection in locale Esempio di Garbage Collection Garbage Collection distribuita - 1 public class Garbage { public static void main(string args[ ]) { String s; s = new String( Ciao ); s = s + " Vittorio"; // chiamiamo il garbage collector System.gc(); System.out.println(s); return; Allochiamo un oggetto stringa Ciao riferito dalla variabile s Concateniamo questa stringa ad una altra stringa la variabile s adesso punta ad un nuovo oggetto stringa Ciao Vittorio quindi la chiamata al garbage collector la elimina Se scrivere un algoritmo (ed implementarlo) per la Garbage Collection di oggetti locali è difficile scriverlo per oggetti distribuiti è davvero improbo La politica di Java RMI ereditata dalla politica degli oggetti di Modula 3 Ogni JVM mantiene il conto dei riferimenti remoti che referenziano un oggetto 23 24
7 Garbage Collection distribuita - 2 Garbage Collection distribuita - 3 Quando l ultimo riferimento viene eliminato, il riferimento diventa weak possibile eliminare l oggetto se non esistono riferimenti locali all oggetti E possibile la interazione con il GC distribuito: Se un oggetto implementa la interface java.rmi.server.unreferenced deve implementare il metodo unreferenced() che viene chiamato quando l ultimo riferimento live viene eliminato 25 Quando un client ottiene un riferimento remoto il DGC considera l oggetto come dirty affidando però un lease (fitto) per una durata di tempo determinata settabile con la proprietà java.rmi.dgc.leasevalue (in millisecondi) al termine del quale il riferimento viene considerato weak e quindi l oggetto può essere collezionato dal GC E responsabilità del client rinnovare il lease e considerare nel codice (attenzione!) la possibilità che per qualche problema sulla connessione, l oggetto remoto non ci sia più 26 Implementazione del DGC Il metodo dirty() Implementa una interface java.rmi.dgc che eredita da Remote Due metodi: dirty() e clean() Le chiamate a dirty() vengono effettuate dal client quando una reference remota viene unmarshaled sono chiamate remote nascoste nel meccanismo di RMI Le chiamate a clean() vengono fatte dal client quando non esistono più riferimenti remoti all oggetto public Lease dirty(objid[ ] ids, long sequencenum, Lease lease) throws RemoteException ObjID sono assegnati dal server agli oggetti remoti unici sequencenum serve per scartare eventuali chiamate giunte in ritardo lease contiene un identificatore unico per la JVM del client (VMID) ed un periodo richiesto viene restituito un lease 27 28
8 L identificazione dei client: il VMID Organizzazione della lezione Una classe che permette di costruire identificatori univoci per una macchina virtuale Java basato anche su IP address della macchina reale In alcuni casi, quindi, non può essere generato se, ad esempio, per sicurezza non viene permesso l accesso a questa informazione Requisiti per la univocità stessi requisiti di java.rmi.server.uid (ID uniche su JVM) host che non fa il reboot in un millisecondo e il cui clock non viene mai messo all indietro Il design pattern della factory in RMI Garbage collection distribuita Il logging dei metodi indirizzo IP unico e costante per la durata dell oggetto Logging delle chiamate Uso del logging per RMI Possibile chiedere alla JVM di effettuare il logging delle chiamate nascoste di RMI Mediante passaggio di parametri su linea di comando alla JVM meccanismo che integra la capacità di costruire oggetti logger fornite da JDK 1.4 che permette di effettuare logging in testo o formattato verso la memoria, stream di output, console, file e socket Offerto (in maniera minimale) da RMI package java.rmi Implementato (in maniera vendor-specific) da SUN package sun.rmi Possibile monitorare sia il server (RMI) che il client (SUN) scegliere il dettaglio (tra SILENT, BRIEF, VERBOSE) Nei log compaiono, tra l altro dettagli sulle chiamate al registry per bind e lookup dettagli sulle chiamate remote effettuate dettagli sulle chiamate per il Distributed Garbage Collector 31 32
9 Come usare il logging: le proprietà Il funzionamento del log lato server java.rmi.server.logcalls logging effettuato lato server verso System.err sun.rmi.server.loglevel controlla il livello di log, può assumere valori di SILENT, BRIEF e VERBOSE sun.rmi.client.logcalls logging effettuato lato client. 33 C:\Sincronia File\Asdsd\Progetti\FactoryExample>java -Djava.security. policy=policyall -Djava.rmi.server.logCalls=true -Dsun.rmi.server.logLevel=Brief FactoryImpl localhost 15-mag sun.rmi.server.unicastref newcall FINE: main: get connection 15-mag sun.rmi.server.unicastserverref logcall MOLTO FINE: RMI TCP Connection(1) : [ : sun.rmi.transport.dgc Impl[0:0:0, 2]: java.rmi.dgc.lease dirty(java.rmi.server.objid[], long, java.rmi.dgc.lease)] 15-mag sun.rmi.server.unicastref done FINE: main: free connection (reuse = true) Pronto! 15-mag sun.rmi.server.unicastserverref logcall MOLTO FINE: RMI TCP Connection(2) : [ : sun.rmi.transport.dgc Impl[0:0:0, 2]: java.rmi.dgc.lease dirty(java.rmi.server.objid[], long, java.rmi.dgc.lease)] 15-mag sun.rmi.server.unicastserverref logcall MOLTO FINE: RMI TCP Connection(2) : [ : FactoryImpl[0]: publi c abstract java.rmi.remote Factory.dammiRemoto(java.lang.String) throws java.rmi.remoteexception] 15-mag sun.rmi.server.unicastref newcall FINE: RMI TCP Connection(2) : get connection 15-mag sun.rmi.server.unicastserverref logcall MOLTO FINE: RMI TCP Connection(3) : [ : sun.rmi.transport.dgc Impl[0:0:0, 2]: java.rmi.dgc.lease dirty(java.rmi.server.objid[], long, java.rmi.dgc.lease)] 15-mag sun.rmi.server.unicastref done. Pippo: Ricevuto Finalmente! 34 Il funzionamento del log lato client (1) Il funzionamento del log lato client (2) C:\Sincronia File\Asdsd\Progetti\FactoryExample>java -Djava.security.policy=poli cyall -Dsun.rmi.client.logCalls=true -Dsun.rmi.client.logLevel=BRIEF Client loca lhost Pippo 15-mag sun.rmi.server.unicastref logclientcall MOLTO FINE: main: outbound call: [endpoint:[localhost:1099](remote),objid:[0:0:0, 0]] : sun.rmi.registry.registryimpl_stub[0:0:0, 0]: java.rmi.remote lookup(jav a.lang.string) 15-mag sun.rmi.server.unicastref logclientcall MOLTO FINE: main: outbound call: [endpoint:[ :1320](remote),objid:[0:0: 0, 2]] : sun.rmi.transport.dgcimpl_stub[0:0:0, 2]: java.rmi.dgc.lease dirty(java.rmi.server.objid[], long, java.rmi.dgc.lease) 15-mag sun.rmi.server.unicastref invoke MOLTO FINE: main: method: public abstract java.rmi.remote Factory.dammiRemoto(ja va.lang.string) throws java.rmi.remoteexception 15-mag sun.rmi.server.unicastref logclientcall MOLTO FINE: main: outbound call: [endpoint:[ :1320](remote),objid:[f336 75:edd :-8000, 0]] : FactoryImpl_Stub[f33675:edd :-8000, 0]: public abstract java.rmi.remote Factory.dammiRemoto(java.lang.String) throws java.rmi.r emoteexception 15-mag sun.rmi.server.unicastref logclientcall MOLTO FINE: main: outbound call: [endpoint:[ :1320](remote),objid:[0:0: 0, 2]] : sun.rmi.transport.dgcimpl_stub[0:0:0, 2]: java.rmi.dgc.lease dirty(java.rmi.server.objid[], long, java.rmi.dgc.lease) 15-mag sun.rmi.server.unicastref invoke. MOLTO FINE: main: method: public abstract java.lang.string RemoteHello.dici(java.lang.String) throws java.rmi.remoteexception 15-mag sun.rmi.server.unicastref logclientcall MOLTO FINE: main: outbound call: [endpoint:[ :1320](remote),objid:[f336 75:edd :-8000, 2]] : RemoteHelloImpl_Stub[f33675:edd :-8000, 2]: pub lic abstract java.lang.string RemoteHello.dici(java.lang.String) throws java.rmi.remoteexception Sono Pippo e ti do' il benvenuto C:\Sincronia File\Asdsd\Progetti\FactoryExample> 35 36
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
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
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
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
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
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
UnicastRemoteObject. 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
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)
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
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
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
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
Laboratorio 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
RMI 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:
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
Programmazione 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
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
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
Comunicazione 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
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
Parte II: Reti di calcolatori Lezione 10
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Parte II: Reti di calcolatori Lezione 10 Giovedì 3-04-2014 1 Reti per la distribuzione
Servers Activatable. Massimo Merro Programmazione di Rete 166 / 193
Servers Activatable Nelle lezioni precedenti abbiamo detto che una referenza remota ad un server di tipo UnicastRemoteObject rimane valida finchè il server è in esecuzione. Quando il server termina, o
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
Sistemi 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
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
Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server
Versione 30.5.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/: applicazioni 1 La logica dei socket Abbiamo visto che un applicazione client si connette
Gli 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
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)
Registri 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ò
Sistemi 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
Parte II: Reti di calcolatori Lezione 12
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Parte II: Reti di calcolatori Lezione 12 Giovedì 16-04-2015 1 Confronto architetture C/S e
Internet 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
Il 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
Scrivere un programma in Java
Programmare in JAVA Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA uff. 0577 234850 - interno: 7102 Stanza 119 rigutini@dii.unisi.it http://www.dii.unisi.it/~rigutini/
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
appunti delle lezioni Architetture client/server: applicazioni server
Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture /: applicazioni 1 La logica dei Abbiamo visto che un applicazione si connette e comunica con un applicazione mediante
Linguaggi 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
Internet 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
appunti delle lezioni Architetture client/server: applicazioni client
Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un esempio particolarmente
Programmazione Java Avanzata Concetti su Java
Programmazione Java Avanzata Concetti su Java Ing. Giuseppe D'Aquì Testi di Riferimento Java ( R. Liguori, P. Liguori), O'Reilly Hops Tecniche Nuove (2008) Java Virtual Machine Il codice scritto in Java
13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti
13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
Chat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata.
Chat Si ha un server in ascolto sulla porta 4444 Quando un client richiede la connessione, il server risponde con: Connessione accettata. Nome: Il client deve rispondere con lo user name A questo punto
RMI. Introduzione DI GIOVANNI PULITI
2001 proprietà di MokaByte s.r.l. tutti i diritti riservati è vietata la riproduzione non autorizzata anche parziale RMI DI GIOVANNI PULITI Introduzione La programmazione distribuita è tra gli argomenti
Firewall. 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
Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.
Prototype 28 4. Prototype (GoF pag. 117) 4.1. Descrizione 4.2. Esempio Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.
20 - Input/Output su File
20 - Input/Output su File 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
JBoss Application Server e Sviluppo di Applicazioni Distribuite in J2EE. Concetti di Base ed Esempi.
SAPIENZA Università di Roma Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale e Ingegneria Informatica Dispensa didattica JBoss Application Server e Sviluppo di Applicazioni Distribuite in
Telematica II 17. Esercitazione/Laboratorio 6
Multitasking e Multithreading Telematica II 17. Esercitazione/Laboratorio 6 Multitasking si riferisce all abilità di un computer di eseguire processi (jobs) multipli in maniera concorrente si ricorda che
R. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone
Il linguaggio Java Nato nel maggio 95 (James Gosling & al.) Orientato ad oggetti, basato sulle classi, concorrente Fortemente tipato: distinzione chiara tra errori statici ed errori dinamici Ad alto livello:
Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010
Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Reflection in Java 1 Reflection Riflessione
10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.
ESERCIZIARIO Risposte ai quesiti: 10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. 10.2. Un numero intero in Java è compreso nell'intervallo ( 2 31 ) e (2 31
19. Introduzione al multi-threading
19. Introduzione al multi-threading Marco Faella Dip. Ing. Elettrica e Tecnologie dell'informazione Università di Napoli Federico II Corso di Linguaggi di Programmazione II I thread I thread, o processi
Main System Monitor Keyboard
Composite 57 8. Composite (Gof pag. 163) 8.1. Descrizione Consente la costruzione di gerarchie di oggetti composti. Gli oggetti composti possono essere conformati da oggetti singoli, oppure da altri oggetti
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
Il Pattern PROXY. Ex presentazione realizzata dallo studente Paolo Melchiori (matricola 65734) nell a.a. 2007-2008
UNIVERSITÀ DEGLI STUDI DI BRESCIA FACOLTÀ DI INGEGNERIA CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA INFORMATICA DIPARTIMENTO DI ELETTRONICA PER L'AUTOMAZIONE Il Pattern PROXY Ex presentazione realizzata
Programmazione Java: Variabili membro, Metodi La parola chiave final
Programmazione Java: Variabili membro, Metodi La parola chiave final romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Definire una classe» Variabili membro» Metodi La parola chiave
Programmazione ad oggetti
DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Informazioni generali Docente: Samuel Rota Bulò @email: srotabul@dais.unive.it Homepage: http://www.dais.unive.it/~srotabul/ ooprogramming2012.html
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
La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni
La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.
/** * 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
Java: Compilazione e Traduzione. Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA. C: Editing, compilazione, esecuzione
Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA A.A. 2007/08 Tutor: Barbara Pettazzoni barbara.pettazzoni@studio.unibo.it Java: Compilazione e Traduzione Editing, compilazione, esecuzione
Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi
Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori
Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti
Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del
Esercitazione sui Design Pattern
Esercitazione sui Design Pattern Pattern Creazionali Singleton Permette la creazione di una sola istanza della classe all interno dell applicazione Fornisce un metodo con cui ottenere l istanza Il costruttore
Prova d Esame 07.04.2006 Compito B
DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "ciao"; protected int n; public General() { n = 3; public
Programmazione a Oggetti Lezione 10. Ereditarieta
Programmazione a Oggetti Lezione 10 Ereditarieta Sommario Come definire sottoclassi Costruttori Abstract Classes Final Ereditarietà: promemoria Strumento tipico dell OOP per riusare il codice e creare
Test di unità con JUnit4
Test di unità con JUnit4 Richiamo sul test di unità Il test d unità è una metodologia che permette di verificare il corretto funzionamento di singole unità di codice in determinate condizioni. Nel caso
Corso di Informatica
Corso di Informatica Modulo T1 B2 Significato e proprietà della OOP 1 Prerequisiti Concetto ed elementi della comunicazione Allocazione e deallocazione della memoria Compilazione di un programma Spazio
(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP
(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP D (FKR&OLHQWH6HUYHU Sviluppare un applicazione C/S in cui: il server attende una connessione da parte del client (su MDYDQHW6HUYHU6RFNHW), usa la
Applicazioni web. Parte 5 Socket
Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Applicazioni web Parte 5 Michele Tomaiuolo tomamic@ce.unipr.it Protocolli Internet I computer
INTRODUZIONE INTRODUZIONE JAVA JAVA
INTRODUZIONE INTRODUZIONE Lo sviluppo di applicazioni complesse porta a costruire moduli software sempre più potenti e versatili, che possano essere riutilizzati in numerosi progetti I linguaggi ad oggetti
Esercizi 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
Programmare con le Socket TCP in java. 2: Application Layer 1
Programmare con le Socket TCP in java 2: Application Layer 1 Il Client contatta il server Il Server: Il processo server è sempre attivo in attesa di connessioni (demone) Crea una socket per accettare la
TFA 42 Sistemi e Reti di Calcolatori per la Didattica
Università degli Studi di Pisa 42 Sistemi e Reti di Calcolatori per la Didattica 29/03/2013 Laura Ricci Laura Ricci 1 DNS: DOMAIN NAME SYSTEM Persone: molti identificativi: o # CF, nome, # passaporto Host
Gestione delle eccezioni in Java
Gestione delle eccezioni in Java - Introduzione al concetto di eccezioni E possibile definire un eccezione come un situazione imprevista che il flusso di un applicazione può incontrare. È possibile gestire
Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java
Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Programmazione Object Oriented in Java
Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Incapsulamento Polimorfismo e Overloading Ereditarietà e Overriding Esercizi svolti Esercizi proposti Paradigma OO Le
Unità B3 Strutture di controllo
(A) CONOSCENZA TERMINOLOGICA Dare una breve descrizione dei termini introdotti: I/O su console Package Blocco di controllo Oggetto System.out Oggetto System.in Oggetto Tastiera Metodo readline() Strutture
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
Connessioni di rete. Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi. PdR_09010 - Stefano Millozzi
Connessioni di rete Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi 1 Socket orientato alla connessione o non orientato alla connessione 2 Socket in astratto 3 Socket modalità
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
Algoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
Scope e visibilità per classi
Scope e visibilità per classi Packages Classi interne nelle loro diverse forme Interne / statiche / locali Utilizzo congiunto con interfacce Implementazione di iteratori Gestione di eventi Packages Package:
Introduzione al linguaggio Java. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali e differenze con C / C++.
Introduzione al linguaggio Java Cosa c è di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali e differenze con C / C++. Dove trovare informazioni?
Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:
Javadoc Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti: /* commenti */ // commenti /** commenti documentazione */ Questi ultimi generano automaticamente
JDBC versione base. Le classi/interfacce principali di JDBC
JDBC versione base Java Database Connectivity è il package Java per l accesso a database relazionali il package contiene interfacce e classi astratte uno dei pregi è la completa indipendenza del codice
La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete
La prima applicazione Java Programma MyFirstApplication Il programma visualizza una finestra vuota sullo schermo. Importo il package delle classi usate nel seguito. Dichiaro la classe MyFirstApplication
Corso di Informatica Modulo T3 B2 - Database in rete
Corso di Informatica Modulo T3 B2 - Database in rete 1 Prerequisiti Programmazione web Applicazione web Modello OSI Architettura client/server Conoscenze generali sui database Tecnologia ADO in Visual
Tecnologie Web L-A. Java e HTTP. Dario Bottazzi Tel. 051 2093541, E-Mail: dario.bottazzi@unibo.it, SkypeID: dariobottazzi. Java e TCP/IP in a Nutshell
Tecnologie Web L-A Java e HTTP Dario Bottazzi Tel. 051 2093541, E-Mail: dario.bottazzi@unibo.it, SkypeID: dariobottazzi Java e TCP/IP in a Nutshell! java.net.inetaddress: rappresenta un indirizzo IP e
GESTIONE 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
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
Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio
Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 30 maggio 2014 Introduzione Un programma diviso in sezioni distinte Un approccio alla
LA 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
RMI. Prova pratica di Sistemi Distribuiti:
Prova pratica di Sistemi Distribuiti: RMI Di Nicola Milella Al fine di toccare con mano queste tecnologie e capirne i rispettivi pro e contro si è deciso di sviluppare un applicazione distribuita sfruttando
Prova d Esame 07.04.2006 Compito A
DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "Ciao"; protected int n; public General() { n = 1; public
Java: Compilatore e Interprete
Java: Compilatore e Interprete Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT
Corsi di Reti di Calcolatori (Docente Luca Becchetti)
Corsi di Reti di Calcolatori (Docente Luca Becchetti) NOT : le soluzioni proposte sono volutamente sintetiche. Lo studente dovrebbe fare uno sforzo per risolvere i quesiti in modo autonomo, espandendo
Garbage Collection Distribuito
Chiamata remota di metodi Il meccanismo di leasing Quando non ci sono più riferimenti, locali o remoti, ad un oggetto, l'oggetto può essere raccolto stub oggetto remoto TIGA 53 In Java, il servizio Distributed
Progettazione : Design Pattern Creazionali
Progettazione : Design Pattern Creazionali Alessandro Martinelli alessandro.martinelli@unipv.it 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali
Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client
Versione 25.4.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un