Programming with JXTA Hello World Peer discovery Peer Group discovery Creating Peer group Joining a Peer Group JXTA: Hello World Requirement Java SDK (http://java.sun.com)[jdk1.6.0_03] JXTA (http://download.jxta.org/index.html) [JXTA 2.4.1] Esempi (http://www.dia.unisa.it/%7Ecordasco/teaching/ASDAD 0607/jxta_devguide.zip) [JXTA 2.3] JXTA: Hello World Compilare usando JXTA javac -classpath ..\lib\jxta.jar; $[FileName] Lanciare un applicazione java -classpath ..\lib\jxta.jar;..\lib\bcprov-jdk14.jar;..\lib\log4j.jar;. $[CurClass] JXTA: Hello World import net.jxta.peergroup.PeerGroup; import net.jxta.peergroup.PeerGroupFactory; import net.jxta.exception.PeerGroupException; public class SimpleJxtaApp { // This is a simple example of how an application would start jxta static PeerGroup netPeerGroup = null; public static void main(String args[]) { System.out.println("Starting JXTA ...."); SimpleJxtaApp myapp = new SimpleJxtaApp(); myapp.startJxta(); System.out.println("Hello from JXTA group " + netPeerGroup.getPeerGroupName() ); System.out.println(" Group ID = " + netPeerGroup.getPeerGroupID().toString()); System.out.println(" Peer name = " + netPeerGroup.getPeerName()); System.out.println(" Peer ID = " + netPeerGroup.getPeerID().toString()); System.out.println( "Good Bye ...."); myapp.netPeerGroup.stopApp(); System.exit(0); } private void startJxta() { try { // create and start the default JXTA NetPeerGroup netPeerGroup = PeerGroupFactory.newNetPeerGroup(); } catch (PeerGroupException e) { // could not instantiate the group, print the stack and exit System.out.println("fatal error : group creation failure"); e.printStackTrace(); System.exit(1); } } } JXTA: Configurazione JXTA: Configurazione JXTA: Configurazione Demo Programming with JXTA Peer discovery Gli advertisement vengono mantenuti nella cache di JXTA (./.jxta/cm) In particolare per ogni gruppo sarà presente una sottodirectory ./.jxta/cm/jxta-NetGroup ./.jxta/cm/group-ID Le directory contengono tre tipi di file *.idx file, indice record-offset.tbl, entry list advertisement.tbl, advertisement Programming with JXTA Peer discovery Per leggere i messaggi dalla cache si usa il metodo getLocalAdvertisement(); Per scrivere nella cache si usa invece il metodo getRemoteAdvertisement(); (il quale invia un messaggio di discovery e attende la risposta). Come si ottiene la risposta Si può aspettare e successivamente controllare la propria cache (getLocalAdvertisement()) Si può utilizzare un Discovery Listner (utilizzato nella demo). Programming with JXTA Per discovery Per instanziare JXTA Programming with JXTA destinazione tipo Attributi della query Threshold Programming with JXTA Demo Peer Discovery Programming with JXTA Group discovery Simile al discovery dei peer In questa demo l’operazione di discovery non parte finchè il nodo non è connesso ad almeno un rendezvous Creazione gruppi usando la shell Programming with JXTA Programming with JXTA Programming with JXTA Demo Group Discovery Programming with JXTA Creating Peer Group and publishing advertisement Stampa dei gruppi presenti nella cache Creazione del gruppo Id ImplAdv Nome Descrizione Pubblicare un gruppo remotePublish(adv) Programming with JXTA Programming with JXTA Programming with JXTA Demo Creating Peer Group and publishing advertisement Programming with JXTA Joining a peer group Programming with JXTA Programming with JXTA Programming with JXTA Demo Joining a peer group