public class JoinManager extends Object
In order for a service to maintain its residency in the lookup services it has joined, the service must provide for the coordination, systematic renewal, and overall management of all leases on that residency. In addition to handling all discovery and join duties, as well as managing all leases on lookup service residency, the service must also provide for the coordination and management of any attribute sets with which it may have registered with the lookup services in which it resides.
 This class performs all of the functions related to
 discovery, joining, service lease renewal, and attribute management which is required of a
 well-behaved service. Each of these activities is intimately involved with the maintenance of a
 service's residency in one or more lookup services (the service's join state), thus the name
 JoinManager. 
This class should be employed by services, not clients. The use of this class in a wide variety of services can help minimize the work resulting from having to repeatedly implement this required functionality in each service. Note that this class is not remote. Services that wish to use this class will create an instance of this class in the service's address space to manage the entity's join state locally.
DiscoveryManagement, 
LeaseRenewalManager, 
Level, 
Logger| Modifier and Type | Class and Description | 
|---|---|
static interface  | 
JoinManager.ModifyAttributesLatch  | 
static interface  | 
JoinManager.ModifyAttributesLatchFactory  | 
| Constructor and Description | 
|---|
JoinManager(Object serviceProxy,
           Entry[] attrSets,
           ServiceID serviceID,
           DiscoveryManagement discoveryMgr,
           LeaseRenewalManager leaseMgr)
Constructs an instance of this class that will register the service with all discovered
 lookup services, using the supplied  
ServiceID. | 
JoinManager(Object serviceProxy,
           Entry[] attrSets,
           ServiceID serviceID,
           DiscoveryManagement discoveryMgr,
           LeaseRenewalManager leaseMgr,
           Configuration config)
Constructs an instance of this class, configured using the items retrieved through the given
  
Configuration, that will register the service with all discovered lookup
 services, using the supplied ServiceID. | 
JoinManager(Object serviceProxy,
           Entry[] attrSets,
           ServiceIDListener callback,
           DiscoveryManagement discoveryMgr,
           LeaseRenewalManager leaseMgr)
Constructs an instance of this class that will register the given service reference with all
 discovered lookup services and, through an event sent to the given
  
ServiceIDListener object, communicate the service ID assigned by the first
 lookup service with which the service is registered. | 
JoinManager(Object serviceProxy,
           Entry[] attrSets,
           ServiceIDListener callback,
           DiscoveryManagement discoveryMgr,
           LeaseRenewalManager leaseMgr,
           Configuration config)
Constructs an instance of this class, configured using the items retrieved through the given
  
Configuration object, that will register the given service reference with all
 discovered lookup services and, through an event sent to the given
 ServiceIDListener object, communicate the service ID assigned by the first
 lookup service with which the service is registered. | 
| Modifier and Type | Method and Description | 
|---|---|
void | 
addAttributes(Entry[] attrSets)
Associates a new set of attributes with the service, in addition to the service's current set
 of attributes. 
 | 
void | 
addAttributes(Entry[] attrSets,
             boolean checkSC)
Associates a new set of attributes with the service, in addition to the service's current set
 of attributes. 
 | 
JoinManager.ModifyAttributesLatch | 
addAttributes(Entry[] attrSets,
             boolean checkSC,
             JoinManager.ModifyAttributesLatchFactory latchFactory)  | 
Entry[] | 
getAttributes()
Returns an array containing the set of attributes currently associated with the service. 
 | 
DiscoveryManagement | 
getDiscoveryManager()
Returns the instance of  
DiscoveryManagement that was either passed into the
 constructor, or that was created as a result of null being input to that
 parameter. | 
ServiceRegistrar[] | 
getJoinSet()
Returns an array of  
ServiceRegistrar objects, each corresponding to a lookup
 service with which the service is currently registered (joined). | 
LeaseRenewalManager | 
getLeaseRenewalManager()
Returns the instance of the  
LeaseRenewalManager class that was either passed
 into the constructor, or that was created as a result of null being input to
 that parameter. | 
void | 
modifyAttributes(Entry[] attrSetTemplates,
                Entry[] attrSets)
Changes the service's current set of attributes using the same semantics as the
  
modifyAttributes method of the ServiceRegistration class. | 
void | 
modifyAttributes(Entry[] attrSetTemplates,
                Entry[] attrSets,
                boolean checkSC)
Changes the service's current set of attributes using the same semantics as the
  
modifyAttributes method of the ServiceRegistration class. | 
JoinManager.ModifyAttributesLatch | 
modifyAttributes(Entry[] attrSetTemplates,
                Entry[] attrSets,
                boolean checkSC,
                JoinManager.ModifyAttributesLatchFactory latchFactory)  | 
void | 
replaceRegistration(Object serviceProxy)
Registers a new reference to the service with all current and future discovered lookup
 services. 
 | 
void | 
replaceRegistration(Object serviceProxy,
                   Entry[] attrSets)
Registers a new reference to the service with all current and future discovered lookup
 services, applying semantics identical to the one-argument form of this method, except with
 respect to the registration of the given attribute sets. 
 | 
void | 
setAttributes(Entry[] attrSets)
Replaces the service's current set of attributes with a new set of attributes. 
 | 
JoinManager.ModifyAttributesLatch | 
setAttributes(Entry[] attrSets,
             JoinManager.ModifyAttributesLatchFactory latchFactory)  | 
void | 
terminate()
Performs cleanup duties related to the termination of the lookup service discovery event
 mechanism, as well as the lease and thread management performed by the
  
JoinManager. | 
public JoinManager(Object serviceProxy, Entry[] attrSets, ServiceIDListener callback, DiscoveryManagement discoveryMgr, LeaseRenewalManager leaseMgr) throws IOException
ServiceIDListener object, communicate the service ID assigned by the first
 lookup service with which the service is registered. This constructor is typically used by
 services which have not yet been assigned a service ID.  The value input to the
 serviceProxy parameter represents the service reference (proxy) to register with
 each discovered lookup service. If the Object input to that parameter is not
 Serializable, an IllegalArgumentException is thrown. If
 null is input to that parameter, a NullPointerException is thrown.
 
 The value input to the attrSets parameter is an array of Entry
 objects, none of whose elements may be null, that represents the new set of
 attributes to associate with the new service reference to be registered. Passing
 null as the value of the attrSets parameter is equivalent to
 passing an empty array. If any of the elements of the attrSets array are
 null, a NullPointerException is thrown. The set of attributes
 passed in this parameter will be associated with the service in all future join processing
 until those attributes are changed through an invocation of a method on this class such as,
 addAttributes, setAttributes, modifyAttributes, or
 replaceRegistration. 
 When constructing this utility, the service supplies an
 object through which notifications that indicate a lookup service has been discovered or
 discarded will be received. At a minimum, the object supplied (through the
 discoveryMgr parameter) must satisfy the contract defined in the
 DiscoveryManagement interface. That is, the object supplied must provide this
 utility with the ability to set discovery listeners and to discard previously discovered
 lookup services when they are found to be unavailable. A value of null may be
 input to the discoveryMgr parameter. When null is input to that
 parameter, an instance of LookupDiscoveryManager is used to listen for events
 announcing the discovery of only those lookup services that are members of the public group.
 
 The object input to the leaseMgr parameter provides for the coordination,
 systematic renewal, and overall management of all leases on the given service reference's
 residency in the lookup services that have been joined. As with the discoveryMgr
 parameter, a value of null may be input to this parameter. When
 null is input to this parameter, an instance of LeaseRenewalManager,
 initially managing no Lease objects will be used. This feature allows a service
 to either use a single entity to manage all of its leases, or to use separate entities: one
 to manage the leases unrelated to the join process, and one to manage the leases that result
 from the join process, that are accessible only within the current instance of the
 JoinManager.
serviceProxy - the service reference (proxy) to register with all discovered lookup
                     servicesattrSets - array of Entry consisting of the attribute sets with which
                     to register the servicecallback - reference to the object that should receive the event containing the
                     service ID, assigned to the service by the first lookup service with
                     which the service reference is registereddiscoveryMgr - reference to the DiscoveryManagement object this class
                     should use to manage lookup service discovery on behalf of the given
                     serviceleaseMgr - reference to the LeaseRenewalManager object this class
                     should use to manage the leases on the given service's residency in the
                     lookup services that have been joinedIllegalArgumentException - if the object input to the serviceProxy
                                            parameter is not serializableNullPointerException - if either null is input to the
                                            serviceProxy parameter, or at least
                                            one of the elements of the attrSets
                                            parameter is nullIOException - if initiation of discovery process results in
                                            IOException when socket allocation
                                            occursIllegalStateException - if this method is called on a terminated
                                            JoinManager instance. Note that this
                                            exception is implementation-specific.ServiceIDListener, 
DiscoveryManagement, 
LookupDiscoveryManager, 
LeaseRenewalManagerpublic JoinManager(Object serviceProxy, Entry[] attrSets, ServiceIDListener callback, DiscoveryManagement discoveryMgr, LeaseRenewalManager leaseMgr, Configuration config) throws IOException, ConfigurationException
Configuration object, that will register the given service reference with all
 discovered lookup services and, through an event sent to the given
 ServiceIDListener object, communicate the service ID assigned by the first
 lookup service with which the service is registered. This constructor is typically used by
 services which have not yet been assigned a service ID, and which wish to allow for
 deployment-time configuration of the service's join processing.  The items used to
 configure the current instance of this class are obtained through the object input to the
 config parameter. If null is input to that parameter, a
 NullPointerException is thrown. 
 The object this utility will use to manage
 lookup service discovery on behalf of the given service can be supplied through either the
 discoveryMgr parameter or through an entry contained in the given
 Configuration. If null is input to the discoveryMgr
 parameter, an attempt will first be made to retrieve from the given
 Configuration, an entry named "discoveryManager" (described above). If such an
 object is successfully retrieved from the given Configuration, that object will
 be used to perform the lookup service discovery management required by this utility. 
 If
 null is input to the discoveryMgr parameter, and no entry named
 "discoveryManager" is specified in the given Configuration, then an instance of
 the utility class LookupDiscoveryManager will be used to listen for events
 announcing the discovery of only those lookup services that are members of the public group.
 
 As with the discoveryMgr parameter, the object this utility will use to
 perform lease management on behalf of the given service can be supplied through either the
 leaseMgr parameter or through an entry contained in the given
 Configuration. If null is input to the leaseMgr
 parameter, an attempt will first be made to retrieve from the given
 Configuration, an entry named "leaseManager" (described above). If such an
 object is successfully retrieved from the given Configuration, that object will
 be used to perform the lease management required by this utility. 
 If null is
 input to the leaseMgr parameter, and no entry named "leaseManager" is specified
 in the given Configuration, then an instance of the utility class
 LeaseRenewalManager that takes the given Configuration will be
 created (initially managing no leases) and used to perform all required lease renewal
 management on behalf of the given service. 
 Except for the config parameter
 and the additional semantics imposed by that parameter (as noted above), all other parameters
 of this form of the constructor, along with their associated semantics, are identical to that
 of the five-argument constructor that takes a ServiceIDListener.
serviceProxy - the service reference (proxy) to register with all discovered lookup
                     servicesattrSets - array of Entry consisting of the attribute sets with which
                     to register the servicecallback - reference to the ServiceIDListener object that should
                     receive the event containing the service ID assigned to the service by
                     the first lookup service with which the service reference is registereddiscoveryMgr - reference to the DiscoveryManagement object this class
                     should use to manage lookup service discovery on behalf of the given
                     serviceleaseMgr - reference to the LeaseRenewalManager object this class
                     should use to manage the leases on the given service's residency in the
                     lookup services that have been joinedconfig - instance of Configuration through which the items used to
                     configure the current instance of this class are obtainedIllegalArgumentException - if the object input to the serviceProxy
                                                parameter is not serializableNullPointerException - if null is input to the
                                                serviceProxy parameter or the
                                                config parameter, or if at least
                                                one of the elements of the attrSets
                                                parameter is nullIOException - if initiation of discovery process results in
                                                IOException when socket
                                                allocation occursConfigurationException - if an exception occurs while retrieving an
                                                item from the given Configuration
                                                objectIllegalStateException - if this method is called on a terminated
                                                JoinManager instance. Note that
                                                this exception is implementation-specific.ServiceIDListener, 
DiscoveryManagement, 
LookupDiscoveryManager, 
LeaseRenewalManager, 
Configuration, 
ConfigurationExceptionpublic JoinManager(Object serviceProxy, Entry[] attrSets, ServiceID serviceID, DiscoveryManagement discoveryMgr, LeaseRenewalManager leaseMgr) throws IOException
ServiceID. This constructor is typically
 used by services which have already been assigned a service ID (possibly by the service
 provider itself or as a result of a prior registration with some lookup service), and which
 do not wish to allow for deployment-time configuration of the service's join processing. 
 Except that the desired ServiceID is supplied through the serviceID
 parameter rather than through a notification sent to a ServiceIDListener, all
 other parameters of this form of the constructor, along with their associated semantics, are
 identical to that of the five-argument constructor that takes a
 ServiceIDListener.
serviceProxy - a reference to the service requesting the services of this classattrSets - array of Entry consisting of the attribute sets with which
                     to register the serviceserviceID - an instance of ServiceID with which to register the service
                     with all desired lookup servicesdiscoveryMgr - reference to the DiscoveryManagement object this class
                     should use to manage the given service's lookup service discovery dutiesleaseMgr - reference to the LeaseRenewalManager object this class
                     should use to manage the leases on the given service's residency in the
                     lookup services that have been joinedIllegalArgumentException - if the object input to the serviceProxy
                                            parameter is not serializableNullPointerException - if either null is input to the
                                            serviceProxy parameter, or at least
                                            one of the elements of the attrSets
                                            parameter is nullIOException - if initiation of discovery process results in
                                            IOException when socket allocation
                                            occursIllegalStateException - if this method is called on a terminated
                                            JoinManager instance. Note that this
                                            exception is implementation-specific.ServiceID, 
DiscoveryManagement, 
LookupDiscoveryManager, 
LeaseRenewalManagerpublic JoinManager(Object serviceProxy, Entry[] attrSets, ServiceID serviceID, DiscoveryManagement discoveryMgr, LeaseRenewalManager leaseMgr, Configuration config) throws IOException, ConfigurationException
Configuration, that will register the service with all discovered lookup
 services, using the supplied ServiceID. This constructor is typically used by
 services which have already been assigned a service ID (possibly by the service provider
 itself or as a result of a prior registration with some lookup service), and which wish to
 allow for deployment-time configuration of the service's join processing.  The items used
 to configure the current instance of this class are obtained through the object input to the
 config parameter. If null is input to that parameter, a
 NullPointerException is thrown. 
 Except that the desired
 ServiceID is supplied through the serviceID parameter rather than
 through a notification sent to a ServiceIDListener, all other parameters of this
 form of the constructor, along with their associated semantics, are identical to that of the
 six-argument constructor that takes a ServiceIDListener.
serviceProxy - a reference to the service requesting the services of this classattrSets - array of Entry consisting of the attribute sets with which
                     to register the service.serviceID - an instance of ServiceID with which to register the service
                     with all desired lookup servicesdiscoveryMgr - reference to the DiscoveryManagement object this class
                     should use to manage lookup service discovery on behalf of the given
                     serviceleaseMgr - reference to the LeaseRenewalManager object this class
                     should use to manage the leases on the given service's residency in the
                     lookup services that have been joinedconfig - instance of Configuration through which the items used to
                     configure the current instance of this class are obtainedIllegalArgumentException - if the object input to the serviceProxy
                                                parameter is not serializableNullPointerException - if null is input to the
                                                serviceProxy parameter or the
                                                config parameter, or if at least
                                                one of the elements of the attrSets
                                                parameter is nullIOException - if initiation of discovery process results in
                                                IOException when socket
                                                allocation occursConfigurationException - if an exception occurs while retrieving an
                                                item from the given Configuration
                                                objectIllegalStateException - if this method is called on a terminated
                                                JoinManager instance. Note that
                                                this exception is implementation-specific.ServiceID, 
DiscoveryManagement, 
LookupDiscoveryManager, 
LeaseRenewalManager, 
Configuration, 
ConfigurationExceptionpublic DiscoveryManagement getDiscoveryManager()
DiscoveryManagement that was either passed into the
 constructor, or that was created as a result of null being input to that
 parameter.  The object returned by this method encapsulates the mechanism by which either
 the JoinManager or the entity itself can set discovery listeners and discard
 previously discovered lookup services when they are found to be unavailable.
DiscoveryManagement interface that was either passed
 into the constructor, or that was created as a result of null being input to
 that parameter.DiscoveryManagement, 
LookupDiscoveryManagerpublic LeaseRenewalManager getLeaseRenewalManager()
LeaseRenewalManager class that was either passed
 into the constructor, or that was created as a result of null being input to
 that parameter.  The object returned by this method manages the leases requested and held
 by the JoinManager. Although it may also manage leases unrelated to the join
 process that are requested and held by the service itself, the leases with which the
 JoinManager is concerned are the leases that correspond to the service
 registration requests made with each lookup service the service wishes to join.
LeaseRenewalManager class that was either passed
 into the constructor, or that was created as a result of null being input to
 that parameter.DiscoveryManagement, 
LeaseRenewalManagerpublic ServiceRegistrar[] getJoinSet()
ServiceRegistrar objects, each corresponding to a lookup
 service with which the service is currently registered (joined). If there are no lookup
 services with which the service is currently registered, this method returns the empty array.
 This method returns a new array upon each invocation.ServiceRegistrar, each corresponding to a lookup
 service with which the service is currently registeredServiceRegistrarpublic Entry[] getAttributes()
Entry consisting of the set of attributes with
 which the service is registered in each lookup service that it has joinedEntry, 
setAttributes(net.jini.core.entry.Entry[])public void addAttributes(Entry[] attrSets)
 An invocation of this method with duplicate
 elements in the attrSets parameter (where duplication means attribute equality
 as defined by calling the MarshalledObject.equals method on field values) is
 equivalent to performing the invocation with the duplicates removed from that parameter. 
 Note that because there is no guarantee that attribute propagation will have completed upon
 return from this method, services that invoke this method must take care not to modify the
 contents of the attrSets parameter. Doing so could cause the service's attribute
 state to be corrupted or inconsistent on a subset of the lookup services with which the
 service is registered as compared with the state reflected on the remaining lookup services.
 It is for this reason that the effects of modifying the contents of the attrSets
 parameter, after this method is invoked, are undefined.
attrSets - array of Entry consisting of the attribute sets with which to
                 augment the service's current set of attributesNullPointerException - if either null is input to the
                                        attrSets parameter, or one or more of the
                                        elements of the attrSets parameter is
                                        nullEntrypublic void addAttributes(Entry[] attrSets, boolean checkSC)
 An invocation of this method with duplicate
 elements in the attrSets parameter (where duplication means attribute equality
 as defined by calling the MarshalledObject.equals method on field values) is
 equivalent to performing the invocation with the duplicates removed from that parameter. 
 Note that because there is no guarantee that attribute propagation will have completed upon
 return from this method, services that invoke this method must take care not to modify the
 contents of the attrSets parameter. Doing so could cause the service's attribute
 state to be corrupted or inconsistent on a subset of the lookup services with which the
 service is registered as compared with the state reflected on the remaining lookup services.
 It is for this reason that the effects of modifying the contents of the attrSets
 parameter, after this method is invoked, are undefined. 
 A service typically employs this
 version of addAttributes to prevent clients or other services from attempting to
 add what are referred to as "service controlled attributes" to the service's set. A service
 controlled attribute is an attribute that implements the ServiceControlled
 marker interface. 
 Consider a printer service. With printers, there are often times error
 conditions, that only the printer can detect (for example, a paper jam or a toner low
 condition). To report conditions such as these to interested parties, the printer typically
 adds an attribute to its attribute set, resulting in an event being sent that notifies
 clients that have registered interest in such events. When the condition is corrected, the
 printer would then remove the attribute from its set by invoking the
 modifyAttributes method in the appropriate manner. 
 Attributes representing
 conditions that only the service can know about or control are good candidates for being
 defined as service controlled attributes. That is, the service provider (the developer of the
 printer service for example) would define the attributes that represent conditions such as
 those just described to implement the ServiceControlled marker interface. Thus,
 when other entities attempt to add new attributes, services that wish to employ such service
 controlled attributes should ultimately invoke only this version of
 addAttributes (with the checkSC parameter set to
 true), resulting in a SecurityException if any of the attributes
 being added happen to be service controlled attributes. In this way, only the printer itself
 would be able to set a "paper jammed" or "toner low" attribute, not some arbitrary client.
attrSets - array of Entry consisting of the attribute sets with which to
                 augment the service's current set of attributescheckSC - boolean flag indicating whether the elements of the set of
                 attributes to add should be checked to determine if they are service
                 controlled attributesNullPointerException - if either null is input to the
                                        attrSets parameter, or one or more of the
                                        elements of the attrSets parameter is
                                        nullSecurityException - if the checkSC parameter is
                                        true, and at least one of the attributes
                                        to be added is an instance of the ServiceControlled
                                        marker interfaceEntry, 
ServiceControlledpublic JoinManager.ModifyAttributesLatch addAttributes(Entry[] attrSets, boolean checkSC, JoinManager.ModifyAttributesLatchFactory latchFactory)
public void setAttributes(Entry[] attrSets)
 An invocation of this method with duplicate elements in the
 attrSets parameter (where duplication means attribute equality as defined by
 calling the MarshalledObject.equals method on field values) is equivalent to
 performing the invocation with the duplicates removed from that parameter. 
 Note that
 because there is no guarantee that attribute propagation will have completed upon return from
 this method, services that invoke this method must take care not to modify the contents of
 the attrSets parameter. Doing so could cause the service's attribute state to be
 corrupted or inconsistent on a subset of the lookup services with which the service is
 registered as compared with the state reflected on the remaining lookup services. It is for
 this reason that the effects of modifying the contents of the attrSets
 parameter, after this method is invoked, are undefined.
attrSets - array of Entry consisting of the attribute sets with which to
                 replace the service's current set of attributesNullPointerException - if either null is input to the
                                        attrSets parameter, or one or more of the
                                        elements of the attrSets parameter is
                                        null.Entry, 
getAttributes()public JoinManager.ModifyAttributesLatch setAttributes(Entry[] attrSets, JoinManager.ModifyAttributesLatchFactory latchFactory)
public void modifyAttributes(Entry[] attrSetTemplates, Entry[] attrSets)
modifyAttributes method of the ServiceRegistration class. The association of the new set of attributes with the service will be propagated to each lookup service with which the service is registered. Note that this propagation is performed asynchronously, thus there is no guarantee that the propagation of the attributes to all lookup services with which the service is registered will have completed upon return from this method.
 Note that if the length of the array containing the templates does not equal
 the length of the array containing the modifications, an IllegalArgumentException
 will be thrown and propagated through this method. 
 Note also that because there is no
 guarantee that attribute propagation will have completed upon return from this method,
 services that invoke this method must take care not to modify the contents of the
 attrSets parameter. Doing so could cause the service's attribute state to be
 corrupted or inconsistent on a subset of the lookup services with which the service is
 registered as compared with the state reflected on the remaining lookup services. It is for
 this reason that the effects of modifying the contents of the attrSets
 parameter, after this method is invoked, are undefined.
attrSetTemplates - array of Entry used to identify which elements to modify
                         from the service's current set of attributesattrSets - array of Entry containing the actual modifications to
                         make in the matching sets found using the attrSetTemplates
                         parameterIllegalArgumentException - if the array containing the templates does not
                                            equal the length of the array containing the
                                            modificationsEntry, 
ServiceRegistration.modifyAttributes(net.jini.core.entry.Entry[], net.jini.core.entry.Entry[])public void modifyAttributes(Entry[] attrSetTemplates, Entry[] attrSets, boolean checkSC)
modifyAttributes method of the ServiceRegistration class. The association of the new set of attributes with the service will be propagated to each lookup service with which the service is registered. Note that this propagation is performed asynchronously, thus there is no guarantee that the propagation of the attributes to all lookup services with which the service is registered will have completed upon return from this method.
 Note that if the length of the array containing the templates does not equal
 the length of the array containing the modifications, an IllegalArgumentException
 will be thrown and propagated through this method. 
 Note also that because there is no
 guarantee that attribute propagation will have completed upon return from this method,
 services that invoke this method must take care not to modify the contents of the
 attrSets parameter. Doing so could cause the service's attribute state to be
 corrupted or inconsistent on a subset of the lookup services with which the service is
 registered as compared with the state reflected on the remaining lookup services. It is for
 this reason that the effects of modifying the contents of the attrSets
 parameter, after this method is invoked, are undefined. 
 A service typically employs this
 version of modifyAttributes to prevent clients or other services from attempting
 to modify what are referred to as "service controlled attributes" in the service's set. A
 service controlled attribute is an attribute that implements the
 ServiceControlled marker interface. 
 Attributes representing conditions that
 only the service can know about or control are good candidates for being defined as service
 controlled attributes. When other entities attempt to modify a service's attributes, if the
 service wishes to employ such service controlled attributes, the service should ultimately
 invoke only this version of modifyAttributes (with the checkSC
 parameter set to true), resulting in a SecurityException if any of
 the attributes being modified happen to be service controlled attributes.
attrSetTemplates - array of Entry used to identify which elements to modify
                         from the service's current set of attributesattrSets - array of Entry containing the actual modifications to
                         make in the matching sets found using the attrSetTemplates
                         parametercheckSC - boolean flag indicating whether the elements of the set
                         of attributes to modify should be checked to determine if they are
                         service controlled attributesIllegalArgumentException - if the array containing the templates does not
                                            equal the length of the array containing the
                                            modificationsSecurityException - if the checkSC parameter is
                                            true, and at least one of the
                                            attributes to be modified is an instance of the
                                            ServiceControlled marker interfaceEntry, 
ServiceRegistration.modifyAttributes(net.jini.core.entry.Entry[], net.jini.core.entry.Entry[]), 
ServiceControlledpublic JoinManager.ModifyAttributesLatch modifyAttributes(Entry[] attrSetTemplates, Entry[] attrSets, boolean checkSC, JoinManager.ModifyAttributesLatchFactory latchFactory)
public void terminate()
JoinManager. This method will cancel all of the service's managed leases that
 were granted by the lookup services with which the service is registered, and will terminate
 all threads that have been created. Note that if the discovery manager employed by the instance of this class that is being terminated was created by the instance itself, this method will terminate all discovery processing being performed by that manager object on behalf of the service; otherwise, the discovery manager supplied by the service is still valid.
 Whether an instance of the LeaseRenewalManager class was supplied by
 the service or created by the JoinManager itself, any reference to that object
 obtained by the service prior to termination will still be valid after termination. Note also
 this class makes certain concurrency guarantees with respect to an invocation of the
 terminate method while other method invocations are in progress. The termination process will
 not begin until completion of all invocations of the methods defined in the public interface
 of this class. Furthermore, once the termination process has begun, no further remote method
 invocations will be made by this class, and all other method invocations made on this class
 will not return until the termination process has completed. 
 Upon completion of the
 termination process, the semantics of all current and future method invocations on the
 instance of this class that was just terminated are undefined; although the reference to the
 LeaseRenewalManager object employed by that instance of JoinManager
 is still valid.
public void replaceRegistration(Object serviceProxy)
ServiceID with which previous registrations were made through this utility. 
 The value input to the serviceProxy parameter represents the new service
 reference (proxy) to register with each discovered lookup service. If the Object
 input to that parameter is not Serializable, an IllegalArgumentException
 is thrown. If null is input to that parameter, a NullPointerException
 is thrown. 
The attribute sets that this method associates with the new service reference are the same attribute sets as those associated with the old registration.
serviceProxy - the new service reference (proxy) to register with all current and future
                     discovered lookup servicesIllegalArgumentException - if the object input to the serviceProxy
                                            parameter is not serializableNullPointerException - if null is input to the
                                            serviceProxy parameterIllegalStateException - if this method is called on a terminated
                                            JoinManager instance. Note that this
                                            exception is implementation-specific.public void replaceRegistration(Object serviceProxy, Entry[] attrSets)
 This form of
  takes as its second parameter, an array of
 Entry objects (attrSets), none of whose elements may be
 null, that represents the new set of attributes to associate with the new
 service reference to be registered. As with the constructor to this utility, passing
 null as the value of the attrSets parameter is equivalent to
 passing an empty array. If any of the elements of attrSets are
 null, a NullPointerException is thrown. This new set of attributes
 will be associated with the service in all future join processing.
serviceProxy - the new service reference (proxy) to register with all current and future
                     discovered lookup servicesattrSets - array of Entry consisting of the attribute sets with which
                     to register the new service reference. Passing null as the
                     value of this parameter is equivalent to passing an empty
                     Entry arrayIllegalArgumentException - if the object input to the serviceProxy
                                            parameter is not serializableNullPointerException - if either null is input to the
                                            serviceProxy parameter, or at least
                                            one of the elements of the attrSets
                                            parameter is nullIllegalStateException - if this method is called on a terminated
                                            JoinManager instance. Note that this
                                            exception is implementation-specific.Copyright © GigaSpaces.