Package com.sun.grid.jam.util

Source Code of com.sun.grid.jam.util.JAMServiceRegistrar$DestroyRun

/*___INFO__MARK_BEGIN__*/
/*************************************************************************
*
*  The Contents of this file are made available subject to the terms of
*  the Sun Industry Standards Source License Version 1.2
*
*  Sun Microsystems Inc., March, 2001
*
*
*  Sun Industry Standards Source License Version 1.2
*  =================================================
*  The contents of this file are subject to the Sun Industry Standards
*  Source License Version 1.2 (the "License"); You may not use this file
*  except in compliance with the License. You may obtain a copy of the
*  License at http://gridengine.sunsource.net/Gridengine_SISSL_license.html
*
*  Software provided under this License is provided on an "AS IS" basis,
*  WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
*  WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
*  MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
*  See the License for the specific provisions governing your rights and
*  obligations concerning the Software.
*
*   The Initial Developer of the Original Code is: Sun Microsystems, Inc.
*   and/or Swiss Center for Scientific Computing
*
*   Copyright: 2002 by Sun Microsystems, Inc.
*   Copyright: 2002 by Swiss Center for Scientific Computing
*
*   All Rights Reserved.
*
************************************************************************/
/*___INFO__MARK_END__*/
package com.sun.grid.jam.util;

import java.io.*;
import java.util.Date;
import java.util.ArrayList;
import java.net.URL;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import net.jini.space.JavaSpace;
import net.jini.core.entry.Entry;
import net.jini.core.lookup.ServiceID;
import net.jini.core.transaction.TransactionException;
import net.jini.core.lookup.ServiceRegistrar;
import net.jini.core.lease.Lease;
import net.jini.core.discovery.LookupLocator;
import net.jini.lookup.ServiceIDListener;
import net.jini.lookup.JoinManager;
import net.jini.lookup.entry.Name;
import net.jini.lease.LeaseRenewalManager;
import net.jini.discovery.DiscoveryManagement;
import net.jini.discovery.LookupDiscovery;
import net.jini.discovery.LookupDiscoveryManager;

/**
* This class is used to register all services in JAM.  It handles
* registration, by utilizing JoinManager, and administration, by
* implementing JoinAdmin & DestroyAdmin (via subinterface JAMAdmin), and
* passing along the Admin. requests to the JoinManager.
*
* @version 1.5, 12/04/00
*
* @author Eric Sharakan
*/
public class JAMServiceRegistrar
  extends UnicastRemoteObject
  implements JAMAdmin, ServiceIDListener, Runnable
{
  protected LookupDiscoveryManager discovery;
  protected JoinManager myJM;
  protected ArrayList joiners;
  protected JAMProxy proxy;
  protected Entry[] attrs;
  protected LookupLocator[] locators;

  public JAMServiceRegistrar(JAMProxy proxy, Entry[] attrs,
           LookupLocator[] locators, ArrayList joiners)
       throws RemoteException
  {
    this.proxy = proxy;
    this.attrs = attrs;
    this.locators = locators;
    this.joiners = joiners;
  }

  public void run()
  {
    try {
      // Due to a bug in Jini 1.1 Alpha, it's best to start off with NO_GROUPS
      // LookupDiscovery construction, and add the groups specification
      // after the JoinManager has been constructed.
      discovery = new LookupDiscoveryManager(LookupDiscovery.NO_GROUPS,
               locators, null);

      proxy.setServerRef(this);
      myJM = new JoinManager(proxy, attrs, this, discovery,
                                       null);
      joiners.add(myJM);

      // Use user.name property as group for joining purposes
      String[] joinGroups = new String[] { System.getProperty("user.name") };
      discovery.addGroups(joinGroups);
    } catch(RemoteException re) {
      re.printStackTrace();
    } catch(IOException ioe) {
      ioe.printStackTrace();
    }
  }

  public void serviceIDNotify(ServiceID id)
  {
    System.out.println("SeviceID is: " + id);
  }
 
  // JoinAdmin, DestroyAdmin implementation methods
  public Entry[] getLookupAttributes() throws RemoteException {
    return myJM.getAttributes();
  }

  public void addLookupAttributes(Entry[] attrSets) throws RemoteException {
    myJM.addAttributes(attrSets, true);
  }

  public void modifyLookupAttributes(Entry[] attrSetTemplates,
             Entry[] attrSets) throws RemoteException
  {
    myJM.modifyAttributes(attrSetTemplates, attrSets, true);
  }

  public String[] getLookupGroups() throws RemoteException {
    return ((LookupDiscovery)myJM.getDiscoveryManager()).getGroups();
  }

  public void addLookupGroups(String[] groups) throws RemoteException {
    try {
      ((LookupDiscovery)myJM.getDiscoveryManager()).addGroups(groups);
    } catch(IOException ioex) {
      throw new RuntimeException(ioex.toString());
    }
  }

  public void removeLookupGroups(String[] groups) throws RemoteException {
    ((LookupDiscovery)myJM.getDiscoveryManager()).removeGroups(groups);
  }

  public void setLookupGroups(String[] groups) throws RemoteException {
    try {
      ((LookupDiscovery)myJM.getDiscoveryManager()).setGroups(groups);
    } catch(IOException ioex) {
      throw new RuntimeException(ioex.toString());
    }
  }

  public LookupLocator[] getLookupLocators() throws RemoteException {
    return locators;
  }

  public void addLookupLocators(LookupLocator[] locators)
       throws RemoteException
  {
    throw new RemoteException("addLookupLocators not supported");
  }

  public void removeLookupLocators(LookupLocator[] locators)
       throws RemoteException
  {
    throw new RemoteException("removeLookupLocators not supported");
  }

  public void setLookupLocators(LookupLocator[] locators)
       throws RemoteException
  {
    throw new RemoteException("setLookupLocators not supported");
  }

  protected class DestroyRun
    implements Runnable
  {
    public DestroyRun()
    {
    }

    public void run()
    {
      // TODO: remove this JoinManager reference from joiners ArrayList. XXX
      myJM.terminate();
    }
  }

  public void destroy()
  {
    DestroyRun dt = new DestroyRun();
    new Thread(dt).start();
  }
}
TOP

Related Classes of com.sun.grid.jam.util.JAMServiceRegistrar$DestroyRun

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.