BEA Systems, Inc.

weblogic.cluster.singleton
Class RemoteLeasingBasisImpl

java.lang.Object
  extended by weblogic.cluster.singleton.RemoteLeasingBasisImpl
All Implemented Interfaces:
Remote, LeasingBasis, RemoteLeasingBasis

public class RemoteLeasingBasisImpl
extends Object
implements RemoteLeasingBasis

Remote implementation of RemoteLeasingBasis as a wrapper around a LeasingBasis.


Constructor Summary
RemoteLeasingBasisImpl(LeasingBasis basis)
           
 
Method Summary
 boolean acquire(String leaseName, String owner, int leaseTimeout)
          Attempts to claim immediate ownership of a lease for this server.
 String[] findExpiredLeases(int gracePeriod)
          Returns a list of the servers that have consistently missed sending heartbeats in a timely manner, and failed to do so for longer than their grace period.
 String findOwner(String leaseName)
          Returns the identity of the server that currently owns the lease.
 String findPreviousOwner(String leaseName)
           
 void release(String leaseName, String owner)
          If the lease is owned by this server, attempts to give up ownership.
 int renewAllLeases(int healthCheckPeriod, String owner)
          Attempts to send a heartbeat to prove the health of the server.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RemoteLeasingBasisImpl

public RemoteLeasingBasisImpl(LeasingBasis basis)
Method Detail

acquire

public boolean acquire(String leaseName,
                       String owner,
                       int leaseTimeout)
                throws IOException
Description copied from interface: LeasingBasis
Attempts to claim immediate ownership of a lease for this server. Returns true if the lease was successfully claimed or if it is already owned by the server. Returns false if the lease is owned by another server. Throws a LeasingException if there were infrastructure problems trying to get ownership. The leaseTimeout specifies how long the lease will last.

Specified by:
acquire in interface LeasingBasis
Specified by:
acquire in interface RemoteLeasingBasis
leaseTimeout - in milliseconds
Returns:
true if the lease was aquired
Throws:
IOException
See Also:
LeasingBasis.acquire(java.lang.String, java.lang.String, int)

release

public void release(String leaseName,
                    String owner)
             throws IOException
Description copied from interface: LeasingBasis
If the lease is owned by this server, attempts to give up ownership. Otherwise does nothing. Throws a LeasingException if infrastructure problems make it impossible to access the lease.

Specified by:
release in interface LeasingBasis
Specified by:
release in interface RemoteLeasingBasis
Throws:
IOException
See Also:
LeasingBasis.release(java.lang.String, java.lang.String)

findOwner

public String findOwner(String leaseName)
                 throws IOException
Description copied from interface: LeasingBasis
Returns the identity of the server that currently owns the lease. Returns null if the lease is not owned. The lease is not considered to be owned if it has been claimed by a server that has missed heartbeats. This is a best-effort result in that the answer may change after the value is returned. Throws a LeasingException if infrastructure problems make it impossible to determine who owns the lease.

Specified by:
findOwner in interface LeasingBasis
Specified by:
findOwner in interface RemoteLeasingBasis
Returns:
name of the owner
Throws:
IOException
See Also:
LeasingBasis.findOwner(java.lang.String)

findPreviousOwner

public String findPreviousOwner(String leaseName)
                         throws IOException
Specified by:
findPreviousOwner in interface LeasingBasis
Specified by:
findPreviousOwner in interface RemoteLeasingBasis
Throws:
IOException
See Also:
LeasingBasis.findPreviousOwner(java.lang.String)

renewAllLeases

public int renewAllLeases(int healthCheckPeriod,
                          String owner)
                   throws IOException,
                          MissedHeartbeatException
Description copied from interface: LeasingBasis
Attempts to send a heartbeat to prove the health of the server. Determines whether or not the heartbeat was sent in a timely manner. This determination should ideally be precise. If it is not, then it has to err on the safe side, i.e., it is better to falsely indicate that a Heartbeat was missed than to fail to indicate that a Heartbeat was missed. The heartbeat is sent for the next period even if the last one was missed. This minimizes the chances of damage while the system is signaling for corrective action. This is semantically equivalent to renewing all of the outstanding leases.

Specified by:
renewAllLeases in interface LeasingBasis
Specified by:
renewAllLeases in interface RemoteLeasingBasis
Parameters:
healthCheckPeriod - in milliseconds
Returns:
number of owned leases
Throws:
IOException
MissedHeartbeatException
See Also:
LeasingBasis.renewAllLeases(int, java.lang.String)

findExpiredLeases

public String[] findExpiredLeases(int gracePeriod)
                           throws IOException
Description copied from interface: LeasingBasis
Returns a list of the servers that have consistently missed sending heartbeats in a timely manner, and failed to do so for longer than their grace period. INVARIANT: If a server stops heartbeating PERMANENTLY, then it will EVENTUALLY be returned in this list, although there is no guarantee as to how long that will take.

Specified by:
findExpiredLeases in interface LeasingBasis
Specified by:
findExpiredLeases in interface RemoteLeasingBasis
Parameters:
gracePeriod - in milliseconds
Throws:
IOException
See Also:
LeasingBasis.findExpiredLeases(int)

Documentation is available at
http://download.oracle.com/docs/cd/E13222_01/wls/docs92
Copyright 2006 BEA Systems Inc.