import net.jini.core.lookup.*; 
import net.jini.discovery.*;
import java.rmi.*;

    class LookupDiscoveryExample implements DiscoveryListener
      {
      int i;
      LookupDiscovery discovery;  
      ServiceRegistrar[] registrars;


      LookupDiscoveryExample ()
        {
        try 
          {
          discovery = new LookupDiscovery (LookupDiscovery.ALL_GROUPS);
          discovery.addDiscoveryListener (this); 
          System.out.println ("\nBegin search for lookup service...");
          }
        catch (Exception e) 
          {
          System.out.println ("LookupDiscoveryExample(): " + e);
          }
        }


      public void discovered (DiscoveryEvent evt)        // DiscoveryListener
        {
        registrars = evt.getRegistrars ();
        System.out.println ("Found a lookup service...");
        for (i = 0; i < registrars.length; i++)
          {
          System.out.println ("    registrar = " + registrars[i]);
          }
        } 


      public void discarded (DiscoveryEvent evt)         // DiscoveryListener
        {
        registrars = evt.getRegistrars ();
        System.out.println ("\ndiscarded():");
        for (i = 0; i < registrars.length; i++)
          {
          System.out.println ("    registrar = " + registrars[i]);
          }
        }


      public static void main (String[] args)
        {
        LookupDiscoveryExample x;

        try 
          {
          System.setSecurityManager (new RMISecurityManager ());

          x = new LookupDiscoveryExample ();

          Thread.currentThread().join ();               // pause indefinitely
          x.discovery.terminate ();                     // stop discovery
          } 
        catch (Exception e) 
          {
          System.out.println ("LookupDiscoveryExample.main(): " + e);
          }
        }
      }

