import java.rmi.RMISecurityManager; import net.jini.core.entry.Entry; import net.jini.core.lookup.ServiceRegistrar; import net.jini.core.lookup.ServiceTemplate; import net.jini.discovery.DiscoveryEvent; import net.jini.discovery.DiscoveryListener; import net.jini.discovery.LookupDiscovery; import net.jini.lookup.entry.Name; public class ClientMultiCast implements DiscoveryListener { // C'est une méthode de l'interface DiscoveryListner qui est invoque une // fois qu'un ou plusieurs Lookupservice on été découverts. public void discovered(DiscoveryEvent de) { HelloWordImpl hello = null; // Initialisation de l'attibue et le modele du service. Name nameEntry = new Name("Bonjour"); Entry aeAttributes[] = new Entry[] { nameEntry }; ServiceTemplate template = new ServiceTemplate(null, null, aeAttributes); try { ServiceRegistrar[] registrars = de.getRegistrars(); for (int i = 0; i < registrars.length; ++i) { hello = (HelloWordImpl) registrars[i].lookup(template); } System.out.println(hello.hello()); } catch (Exception e) { System.out.println(e.getMessage()); } } // C'est une méthode de l'interface DiscoveryListner qui est invoque une // fois qu'un // ou plusieurs Lookupservice on été détruis. public void discarded(DiscoveryEvent de) { } public static void main(String[] args) { ClientMultiCast client = new ClientMultiCast(); try { // Security Manager pour que le classe loader puisse charger des // classes System.setSecurityManager(new RMISecurityManager()); System.out.println("Recherche du lookup service"); // Instanciation d'un objet LookupLocator pour effectuer la // découverte en multicast LookupDiscovery lookup = new LookupDiscovery( LookupDiscovery.ALL_GROUPS); // Ajoute d'un « Listener » qui permet de récupèrer les événements // de DiscoveryEvent. lookup.addDiscoveryListener(client); while (true) { Thread.sleep(1000); } } catch (Exception e) { System.out.println(e.getMessage()); } } }