com.sun.jini.reggie
Class TransientRegistrarImpl

java.lang.Object
  extended by com.sun.jini.reggie.TransientRegistrarImpl
All Implemented Interfaces:
ProxyAccessor, ServerProxyTrust

public class TransientRegistrarImpl
extends Object

Class for starting transient lookup services.

Author:
Sun Microsystems, Inc.

Constructor Summary
protected TransientRegistrarImpl(Configuration config, LifeCycle lifeCycle)
          Constructs a TransientRegistrarImpl based on the configuration argument If lifeCycle is non-null, then its unregister method is invoked during service shutdown.
protected TransientRegistrarImpl(String[] configArgs, LifeCycle lifeCycle)
          Constructs a TransientRegistrarImpl based on a configuration obtained using the provided arguments.
 
Method Summary
 void addAttributes(ServiceID serviceID, Uuid leaseID, com.sun.jini.reggie.EntryRep[] attrSets)
          Adds the specified attribute sets (those that aren't duplicates of existing attribute sets) to the registered service item.
 void addLookupAttributes(Entry[] attrSets)
          Add attribute sets for the service.
 void addLookupGroups(String[] groups)
          Add new groups to the set to join.
 void addLookupLocators(LookupLocator[] locators)
          Add locators for specific new lookup services to join.
 void addMemberGroups(String[] groups)
          Adds the given set of names to the set whose elements are the names of the groups in which the lookup service is currently a member.
 void cancelEventLease(long eventID, Uuid leaseID)
          Cancels an event lease.
 Exception[] cancelLeases(Object[] regIDs, Uuid[] leaseIDs)
          Cancels service and event leases from a LeaseMap.
 void cancelServiceLease(ServiceID serviceID, Uuid leaseID)
          Cancels a service lease.
 void destroy()
          Destroy the service, if possible, including its persistent storage.
 Object getAdmin()
          Returns an object that implements whatever administration interfaces are appropriate for the particular service.
 com.sun.jini.reggie.EntryClassBase[] getEntryClasses(com.sun.jini.reggie.Template tmpl)
          Looks at all service items that match the specified template, finds every entry (among those service items) that either doesn't match any entry templates or is a subclass of at least one matching entry template, and returns the set of the (most specific) classes of those entries.
 Object[] getFieldValues(com.sun.jini.reggie.Template tmpl, int setIndex, int field)
          Looks at all service items that match the specified template, finds every entry (among those service items) that matches tmpl.attributeSetTemplates[setIndex], and returns the set of values of the specified field of those entries.
 LookupLocator getLocator()
          Returns a LookupLocator that can be used if necessary for unicast discovery of the lookup service.
 Entry[] getLookupAttributes()
          Get the current attribute sets for the service.
 String[] getLookupGroups()
          Get the list of groups to join.
 LookupLocator[] getLookupLocators()
          Get the list of locators of specific lookup services to join.
 String[] getMemberGroups()
          Returns an array consisting of the names of the groups in which the lookup service is a member.
 Object getProxy()
          Returns a proxy object for this remote object.
 TrustVerifier getProxyVerifier()
          Returns a TrustVerifier that can be used to verify that a proxy can be trusted as a proxy for the service; that is, the isTrustedObject method of the returned verifier can be called with a candidate proxy.
 Object getServiceProxy()
          Returns a proxy object for this object.
 com.sun.jini.reggie.ServiceTypeBase[] getServiceTypes(com.sun.jini.reggie.Template tmpl, String prefix)
          Looks at all service items that match the specified template, and for every service item finds the most specific type (class or interface) or types the service item is an instance of that are neither equal to, nor a superclass of, any of the service types in the template and that have names that start with the specified prefix, and returns the set of all such types.
 int getUnicastPort()
          Returns the port number on which the lookup service listens for unicast discovery queries.
 MarshalledWrapper lookup(com.sun.jini.reggie.Template tmpl)
          Returns the service object (i.e., just ServiceItem.service) from an item matching the template, or null if there is no match.
 com.sun.jini.reggie.Matches lookup(com.sun.jini.reggie.Template tmpl, int maxMatches)
          Returns at most maxMatches items matching the template, plus the total number of items that match the template.
 void modifyAttributes(ServiceID serviceID, Uuid leaseID, com.sun.jini.reggie.EntryRep[] attrSetTmpls, com.sun.jini.reggie.EntryRep[] attrSets)
          Modifies existing attribute sets of a registered service item.
 void modifyLookupAttributes(Entry[] attrSetTemplates, Entry[] attrSets)
          Modify the current attribute sets, using the same semantics as ServiceRegistration.modifyAttributes.
 EventRegistration notify(com.sun.jini.reggie.Template tmpl, int transitions, RemoteEventListener listener, MarshalledObject handback, long leaseDuration)
          Registers for event notification.
 ServiceRegistration register(com.sun.jini.reggie.Item nitem, long leaseDuration)
          Register a new service or re-register an existing service.
 void removeLookupGroups(String[] groups)
          Remove groups from the set to join.
 void removeLookupLocators(LookupLocator[] locators)
          Remove locators for specific lookup services from the set to join.
 void removeMemberGroups(String[] groups)
          Deletes the elements of the given set of names from the set whose elements are the names of the groups in which the lookup service is currently a member.
 long renewEventLease(long eventID, Uuid leaseID, long renewDuration)
          Renews an event lease.
 com.sun.jini.reggie.RenewResults renewLeases(Object[] regIDs, Uuid[] leaseIDs, long[] renewDurations)
          Renews service and event leases from a LeaseMap.
 long renewServiceLease(ServiceID serviceID, Uuid leaseID, long renewDuration)
          Renews a service lease.
 void setAttributes(ServiceID serviceID, Uuid leaseID, com.sun.jini.reggie.EntryRep[] attrSets)
          Deletes all of the service item's existing attributes, and replaces them with the specified attribute sets.
 void setLookupGroups(String[] groups)
          Replace the list of groups to join with a new list.
 void setLookupLocators(LookupLocator[] locators)
          Replace the list of locators of specific lookup services to join with a new list.
 void setMemberGroups(String[] groups)
          Replaces the set whose elements are the names of the groups in which the lookup service is currently a member with the given set of group names.
 void setUnicastPort(int port)
          Changes the number of the port on which the lookup service is currently listening for unicast discovery queries to the given port number.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TransientRegistrarImpl

protected TransientRegistrarImpl(String[] configArgs,
                                 LifeCycle lifeCycle)
                          throws Exception
Constructs a TransientRegistrarImpl based on a configuration obtained using the provided arguments. If lifeCycle is non-null, then its unregister method is invoked during service shutdown.

Throws:
Exception

TransientRegistrarImpl

protected TransientRegistrarImpl(Configuration config,
                                 LifeCycle lifeCycle)
                          throws Exception
Constructs a TransientRegistrarImpl based on the configuration argument If lifeCycle is non-null, then its unregister method is invoked during service shutdown. It has the new (Embedded)NonActivatableServiceDescriptor service signature. protected to signal it should be started via the ServiceStarter or derived.

Throws:
Exception
Method Detail

getServiceProxy

public Object getServiceProxy()
                       throws NoSuchObjectException
Description copied from interface: ServiceProxyAccessor
Returns a proxy object for this object. This value should not be null.

Returns:
a proxy object reference
Throws:
NoSuchObjectException

getProxy

public Object getProxy()
Description copied from interface: ProxyAccessor
Returns a proxy object for this remote object. If this remote object is not exported (and hence, no proxy is available), then null is returned.

Specified by:
getProxy in interface ProxyAccessor
Returns:
a proxy, or null

getProxyVerifier

public TrustVerifier getProxyVerifier()
                               throws NoSuchObjectException
Description copied from interface: ServerProxyTrust
Returns a TrustVerifier that can be used to verify that a proxy can be trusted as a proxy for the service; that is, the isTrustedObject method of the returned verifier can be called with a candidate proxy. The verifier should be able to verify all proxies for the service, including proxies for resources (such as leases and registrations).

Specified by:
getProxyVerifier in interface ServerProxyTrust
Returns:
a TrustVerifier that can be used to verify that a proxy can be trusted as a proxy for the service
Throws:
NoSuchObjectException

register

public ServiceRegistration register(com.sun.jini.reggie.Item nitem,
                                    long leaseDuration)
                             throws NoSuchObjectException
Register a new service or re-register an existing service.

Throws:
NoSuchObjectException
See Also:
ServiceRegistrar.register(net.jini.core.lookup.ServiceItem, long)

lookup

public MarshalledWrapper lookup(com.sun.jini.reggie.Template tmpl)
                         throws NoSuchObjectException
Returns the service object (i.e., just ServiceItem.service) from an item matching the template, or null if there is no match.

Throws:
NoSuchObjectException
See Also:
ServiceRegistrar.lookup(net.jini.core.lookup.ServiceTemplate)

lookup

public com.sun.jini.reggie.Matches lookup(com.sun.jini.reggie.Template tmpl,
                                          int maxMatches)
                                   throws NoSuchObjectException
Returns at most maxMatches items matching the template, plus the total number of items that match the template.

Throws:
NoSuchObjectException
See Also:
ServiceRegistrar.lookup(net.jini.core.lookup.ServiceTemplate)

notify

public EventRegistration notify(com.sun.jini.reggie.Template tmpl,
                                int transitions,
                                RemoteEventListener listener,
                                MarshalledObject handback,
                                long leaseDuration)
                         throws RemoteException
Registers for event notification.

Throws:
RemoteException
See Also:
ServiceRegistrar.notify(net.jini.core.lookup.ServiceTemplate, int, net.jini.core.event.RemoteEventListener, java.rmi.MarshalledObject, long)

getEntryClasses

public com.sun.jini.reggie.EntryClassBase[] getEntryClasses(com.sun.jini.reggie.Template tmpl)
                                                     throws NoSuchObjectException
Looks at all service items that match the specified template, finds every entry (among those service items) that either doesn't match any entry templates or is a subclass of at least one matching entry template, and returns the set of the (most specific) classes of those entries.

Throws:
NoSuchObjectException
See Also:
ServiceRegistrar.getEntryClasses(net.jini.core.lookup.ServiceTemplate)

getFieldValues

public Object[] getFieldValues(com.sun.jini.reggie.Template tmpl,
                               int setIndex,
                               int field)
                        throws NoSuchObjectException
Looks at all service items that match the specified template, finds every entry (among those service items) that matches tmpl.attributeSetTemplates[setIndex], and returns the set of values of the specified field of those entries. The field name has been converted to an index (fields numbered from super to subclass).

Throws:
NoSuchObjectException
See Also:
ServiceRegistrar.getFieldValues(net.jini.core.lookup.ServiceTemplate, int, java.lang.String)

getServiceTypes

public com.sun.jini.reggie.ServiceTypeBase[] getServiceTypes(com.sun.jini.reggie.Template tmpl,
                                                             String prefix)
                                                      throws NoSuchObjectException
Looks at all service items that match the specified template, and for every service item finds the most specific type (class or interface) or types the service item is an instance of that are neither equal to, nor a superclass of, any of the service types in the template and that have names that start with the specified prefix, and returns the set of all such types.

Throws:
NoSuchObjectException
See Also:
ServiceRegistrar.getServiceTypes(net.jini.core.lookup.ServiceTemplate, java.lang.String)

getLocator

public LookupLocator getLocator()
                         throws NoSuchObjectException
Returns a LookupLocator that can be used if necessary for unicast discovery of the lookup service.

Throws:
NoSuchObjectException
See Also:
ServiceRegistrar.getLocator()

getAdmin

public Object getAdmin()
                throws NoSuchObjectException
Description copied from interface: Administrable
Returns an object that implements whatever administration interfaces are appropriate for the particular service.

Returns:
an object that implements whatever administration interfaces are appropriate for the particular service.
Throws:
NoSuchObjectException
See Also:
JoinAdmin

addAttributes

public void addAttributes(ServiceID serviceID,
                          Uuid leaseID,
                          com.sun.jini.reggie.EntryRep[] attrSets)
                   throws NoSuchObjectException,
                          UnknownLeaseException
Adds the specified attribute sets (those that aren't duplicates of existing attribute sets) to the registered service item.

Throws:
NoSuchObjectException
UnknownLeaseException
See Also:
ServiceRegistration.addAttributes(net.jini.core.entry.Entry[])

modifyAttributes

public void modifyAttributes(ServiceID serviceID,
                             Uuid leaseID,
                             com.sun.jini.reggie.EntryRep[] attrSetTmpls,
                             com.sun.jini.reggie.EntryRep[] attrSets)
                      throws NoSuchObjectException,
                             UnknownLeaseException
Modifies existing attribute sets of a registered service item.

Throws:
NoSuchObjectException
UnknownLeaseException
See Also:
ServiceRegistration.modifyAttributes(net.jini.core.entry.Entry[], net.jini.core.entry.Entry[])

setAttributes

public void setAttributes(ServiceID serviceID,
                          Uuid leaseID,
                          com.sun.jini.reggie.EntryRep[] attrSets)
                   throws NoSuchObjectException,
                          UnknownLeaseException
Deletes all of the service item's existing attributes, and replaces them with the specified attribute sets.

Throws:
NoSuchObjectException
UnknownLeaseException
See Also:
ServiceRegistration.setAttributes(net.jini.core.entry.Entry[])

cancelServiceLease

public void cancelServiceLease(ServiceID serviceID,
                               Uuid leaseID)
                        throws NoSuchObjectException,
                               UnknownLeaseException
Cancels a service lease.

Throws:
NoSuchObjectException
UnknownLeaseException
See Also:
Lease.cancel()

renewServiceLease

public long renewServiceLease(ServiceID serviceID,
                              Uuid leaseID,
                              long renewDuration)
                       throws NoSuchObjectException,
                              UnknownLeaseException
Renews a service lease.

Throws:
NoSuchObjectException
UnknownLeaseException
See Also:
Lease.renew(long)

cancelEventLease

public void cancelEventLease(long eventID,
                             Uuid leaseID)
                      throws NoSuchObjectException,
                             UnknownLeaseException
Cancels an event lease.

Throws:
NoSuchObjectException
UnknownLeaseException
See Also:
Lease.cancel()

renewEventLease

public long renewEventLease(long eventID,
                            Uuid leaseID,
                            long renewDuration)
                     throws NoSuchObjectException,
                            UnknownLeaseException
Renews an event lease.

Throws:
NoSuchObjectException
UnknownLeaseException
See Also:
Lease.renew(long)

renewLeases

public com.sun.jini.reggie.RenewResults renewLeases(Object[] regIDs,
                                                    Uuid[] leaseIDs,
                                                    long[] renewDurations)
                                             throws NoSuchObjectException
Renews service and event leases from a LeaseMap.

Throws:
NoSuchObjectException
See Also:
LeaseMap.renewAll()

cancelLeases

public Exception[] cancelLeases(Object[] regIDs,
                                Uuid[] leaseIDs)
                         throws NoSuchObjectException
Cancels service and event leases from a LeaseMap.

Throws:
NoSuchObjectException
See Also:
LeaseMap.cancelAll()

getLookupAttributes

public Entry[] getLookupAttributes()
                            throws NoSuchObjectException
Description copied from interface: JoinAdmin
Get the current attribute sets for the service.

Returns:
the current attribute sets for the service
Throws:
NoSuchObjectException

addLookupAttributes

public void addLookupAttributes(Entry[] attrSets)
                         throws RemoteException
Description copied from interface: JoinAdmin
Add attribute sets for the service. The resulting set will be used for all future joins. The attribute sets are also added to all currently-joined lookup services.

Parameters:
attrSets - the attribute sets to add
Throws:
RemoteException

modifyLookupAttributes

public void modifyLookupAttributes(Entry[] attrSetTemplates,
                                   Entry[] attrSets)
                            throws RemoteException
Description copied from interface: JoinAdmin
Modify the current attribute sets, using the same semantics as ServiceRegistration.modifyAttributes. The resulting set will be used for all future joins. The same modifications are also made to all currently-joined lookup services.

Parameters:
attrSetTemplates - the templates for matching attribute sets
attrSets - the modifications to make to matching sets
Throws:
RemoteException
See Also:
ServiceRegistration.modifyAttributes(net.jini.core.entry.Entry[], net.jini.core.entry.Entry[])

getLookupGroups

public String[] getLookupGroups()
                         throws NoSuchObjectException
Description copied from interface: JoinAdmin
Get the list of groups to join. An empty array means the service joins no groups (as opposed to "all" groups).

Returns:
an array of groups to join. An empty array means the service joins no groups (as opposed to "all" groups).
Throws:
NoSuchObjectException
See Also:
JoinAdmin.setLookupGroups(java.lang.String[])

addLookupGroups

public void addLookupGroups(String[] groups)
                     throws NoSuchObjectException
Description copied from interface: JoinAdmin
Add new groups to the set to join. Lookup services in the new groups will be discovered and joined.

Parameters:
groups - groups to join
Throws:
NoSuchObjectException
See Also:
JoinAdmin.removeLookupGroups(java.lang.String[])

removeLookupGroups

public void removeLookupGroups(String[] groups)
                        throws NoSuchObjectException
Description copied from interface: JoinAdmin
Remove groups from the set to join. Leases are cancelled at lookup services that are not members of any of the remaining groups.

Parameters:
groups - groups to leave
Throws:
NoSuchObjectException
See Also:
JoinAdmin.addLookupGroups(java.lang.String[])

setLookupGroups

public void setLookupGroups(String[] groups)
                     throws NoSuchObjectException
Description copied from interface: JoinAdmin
Replace the list of groups to join with a new list. Leases are cancelled at lookup services that are not members of any of the new groups. Lookup services in the new groups will be discovered and joined.

Parameters:
groups - groups to join
Throws:
NoSuchObjectException
See Also:
JoinAdmin.getLookupGroups()

getLookupLocators

public LookupLocator[] getLookupLocators()
                                  throws NoSuchObjectException
Description copied from interface: JoinAdmin
Get the list of locators of specific lookup services to join.

Returns:
the list of locators of specific lookup services to join
Throws:
NoSuchObjectException
See Also:
JoinAdmin.setLookupLocators(net.jini.core.discovery.LookupLocator[])

addLookupLocators

public void addLookupLocators(LookupLocator[] locators)
                       throws RemoteException
Description copied from interface: JoinAdmin
Add locators for specific new lookup services to join. The new lookup services will be discovered and joined.

Parameters:
locators - locators of specific lookup services to join
Throws:
RemoteException
See Also:
JoinAdmin.removeLookupLocators(net.jini.core.discovery.LookupLocator[])

removeLookupLocators

public void removeLookupLocators(LookupLocator[] locators)
                          throws RemoteException
Description copied from interface: JoinAdmin
Remove locators for specific lookup services from the set to join. Any leases held at the lookup services are cancelled.

Parameters:
locators - locators of specific lookup services to leave
Throws:
RemoteException
See Also:
JoinAdmin.addLookupLocators(net.jini.core.discovery.LookupLocator[])

setLookupLocators

public void setLookupLocators(LookupLocator[] locators)
                       throws RemoteException
Description copied from interface: JoinAdmin
Replace the list of locators of specific lookup services to join with a new list. Leases are cancelled at lookup services that were in the old list but are not in the new list. Any new lookup services will be discovered and joined.

Parameters:
locators - locators of specific lookup services to join
Throws:
RemoteException
See Also:
JoinAdmin.getLookupLocators()

addMemberGroups

public void addMemberGroups(String[] groups)
                     throws NoSuchObjectException
Description copied from interface: DiscoveryAdmin
Adds the given set of names to the set whose elements are the names of the groups in which the lookup service is currently a member. Elements in the input set that duplicate names of groups in which the lookup service is already a member will be ignored. If the empty array (NO_GROUPS) is input, this method takes no action.

Parameters:
groups - String array consisting of the names of the new, additional groups in which the lookup service is to be a member.
Throws:
NoSuchObjectException

removeMemberGroups

public void removeMemberGroups(String[] groups)
                        throws NoSuchObjectException
Description copied from interface: DiscoveryAdmin
Deletes the elements of the given set of names from the set whose elements are the names of the groups in which the lookup service is currently a member. Any element in the input set that is not a name of a group in which the lookup service is currently a member will be ignored. If the empty array (NO_GROUPS) is input, this method takes no action.

Parameters:
groups - String array consisting of the names to remove from the set whose elements are the names of the groups in which the lookup service is currently a member.
Throws:
NoSuchObjectException

getMemberGroups

public String[] getMemberGroups()
                         throws NoSuchObjectException
Description copied from interface: DiscoveryAdmin
Returns an array consisting of the names of the groups in which the lookup service is a member. If the lookup service currently belongs to no groups, this method will return the empty array.

Returns:
String array consisting of the names of the groups in which the lookup service is a member
Throws:
NoSuchObjectException

setMemberGroups

public void setMemberGroups(String[] groups)
                     throws NoSuchObjectException
Description copied from interface: DiscoveryAdmin
Replaces the set whose elements are the names of the groups in which the lookup service is currently a member with the given set of group names. Elements in the input set that duplicate other elements in the input set will be ignored. If the empty array (NO_GROUPS) is input, then the lookup service will be a member of no groups.

Parameters:
groups - String array consisting of the names of the new groups in which the lookup service is to be a member.
Throws:
NoSuchObjectException

getUnicastPort

public int getUnicastPort()
                   throws NoSuchObjectException
Description copied from interface: DiscoveryAdmin
Returns the port number on which the lookup service listens for unicast discovery queries.

Returns:
an int representing the port number on which the lookup service listens for unicast discovery queries.
Throws:
NoSuchObjectException

setUnicastPort

public void setUnicastPort(int port)
                    throws IOException,
                           RemoteException
Description copied from interface: DiscoveryAdmin
Changes the number of the port on which the lookup service is currently listening for unicast discovery queries to the given port number. If a value of zero is input, then the lookup service will first try to listen on the standard unicast discovery port, but if that fails, the lookup service will listen on an arbitrary port.

Parameters:
port - int representing the new port number on which the lookup service should listen for unicast discovery queries.
Throws:
IOException - because an invocation of this method will result in the re-initiation of the unicast discovery process, which can throw an IOException when socket allocation occurs.
RemoteException - typically, this exception occurs when there is a communication failure between the client and the server.

destroy

public void destroy()
             throws RemoteException
Description copied from interface: DestroyAdmin
Destroy the service, if possible, including its persistent storage. This method should (in effect) spawn a separate thread to do the actual work asynchronously, and make a reasonable attempt to let this remote call return successfully. As such, a successful return from this method does not mean that the service has been destroyed. Although the service should make a reasonable attempt to let this remote call return successfully, the service must not wait indefinitely for other (in-progress and subsequent) remote calls to finish before proceeding to destroy itself. Once this method has been called, the service can, but need not, reject all other (in-progress and subsequent) remote calls to the service.

Throws:
RemoteException


Copyright 2007-2010, multiple authors.
Licensed under the Apache License, Version 2.0, see the NOTICE file for attributions.