Strumenti Utente

Strumenti Sito


lpr-b-2007-2008:note

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisione Revisione precedente
Prossima revisione
Revisione precedente
lpr-b-2007-2008:note [23/11/2007 alle 14:10 (17 anni fa)]
Marco Danelutto
lpr-b-2007-2008:note [19/09/2008 alle 14:08 (16 anni fa)] (versione attuale)
Linea 101: Linea 101:
  
 Questo è il [[sorgenteODP|sorgente]] della classe ODP, discussa a lezione, che si può utilizzare per l'invio e la ricezione di Object mediante DatagramPacket. La classe è stata modificata rispetto a quanto presentato a lezione, in verità, perchè è stato aggiunto il controllo sulla dimensione del pacchetto. I metodi sono stati trasformati in modo dal lanciare eccezzioni in caso di problemi. Verificatene l'utilizzabilità e modificatela pure a vostro piacimento.  Questo è il [[sorgenteODP|sorgente]] della classe ODP, discussa a lezione, che si può utilizzare per l'invio e la ricezione di Object mediante DatagramPacket. La classe è stata modificata rispetto a quanto presentato a lezione, in verità, perchè è stato aggiunto il controllo sulla dimensione del pacchetto. I metodi sono stati trasformati in modo dal lanciare eccezzioni in caso di problemi. Verificatene l'utilizzabilità e modificatela pure a vostro piacimento. 
 +
 +
 +
  
  
  
 ==== DatagramSocket che perde una percentuale di pacchetti ==== ==== DatagramSocket che perde una percentuale di pacchetti ====
-Se volete testare programmi che utilizzano DatagramSocket per la spedizione di pacchetti UDP utilizzate [[lpr-b:datagrampacket|questa implementazione]]. Vedi anche pagina degli [[|esercizi]]. L'implementazione perde una percentuale di pacchetti stabilita dall'utente (il 10% per default). +Se volete testare programmi che utilizzano DatagramSocket per la spedizione di pacchetti UDP utilizzate [[lpr-b:datagrampacket|questa implementazione]]. Vedi anche pagina degli [[lpr-b:esercizi#test_datagram|esercizi]]. L'implementazione perde una percentuale di pacchetti stabilita dall'utente (il 10% per default).  
 + 
 + 
 +==== Documentazione su RMI ==== 
 +Esiste un {{http://java.sun.com/docs/books/tutorial/rmi/overview.html|tutorial}} sul sito Sun/Java che spiega esaudientemente tutto quanto serve per realizzare programmi Java con RMI. 
 +Un altro mini tutorial decente si trova su {{http://www.javacoffeebreak.com/articles/javarmi/javarmi.html|javacoffebreak}}. 
 +Informazioni dettagliate sull'uso delle policy si trovano anche su {{http://www.exampledepot.com/egs/java.security/UsePolicy.html|The Java Developers Almanac}} (anche se queste fanno ancora riferimento a versioni vecchie di Java). 
 + 
 + 
 +==== Security Managers con RMI ==== 
 +Quando si voglia (o si debba) usare un SecurityManager per permettere caricamento dinamico di classi con RMI, si deve specificare un file con i permessi necessari alla polocy che si vuole implementare secondo il formato standard definito da Java ({{http://java.sun.com/j2se/1.4.2/docs/guide/security/PolicyFiles.html|pagina sito Sun/Java}}). 
 +In questo caso, il programma deve essere lanciato definendo a riga di comando quale file di policy deve essere consultato. A tale scopo si usa la sintassi 
 + 
 +   java -Djava.security.policy=FileCheContieneLaPolicy nomeDellaClasseMain 
 + 
 +Da notare che apparentemente una  
 + 
 +  grant { 
 +   permission  java.security.AllPermissions;  
 +  };  
 + 
 +non da' i permessi necessari alla lookup dell'oggetto remoto che vanno pertanto specificati con una permission esplicita tipo: 
 + 
 +   permission java.net.SocketPermission "fujih1.cli.di.unipi.it", "connect,resolve"; 
 + 
 +dove il nome della macchina può essere sostituito dal wildcard "*" 
 + 
 +==== Esempio commentato sull'uso delle callback con RMI ==== 
 +Su {{http://www.itec.uni-klu.ac.at/~harald/ds2001/rmi/pattern/pattern2.html|questo link}} trovate un esempio di codice master/worker realizzato con RMI sia senza che con le callback.  
lpr-b-2007-2008/note.1195827035.txt.gz · Ultima modifica: 19/09/2008 alle 14:08 (16 anni fa) (modifica esterna)