org.jboss.ha.framework.interfaces
Class FirstAvailable

java.lang.Object
  extended byorg.jboss.ha.framework.interfaces.FirstAvailable
All Implemented Interfaces:
LoadBalancePolicy (src) , java.io.Serializable

public class FirstAvailable
extends java.lang.Object
implements LoadBalancePolicy (src)

LoadBalancingPolicy implementation that always favor the first available target i.e. no load balancing occurs. Nevertheless, the first target is randomly selected. This does not mean that fail-over will not occur if the first member in the list dies. In this case, fail-over will occur, and a new target will become the first member and invocation will continously be invoked on the same new target until its death. Each proxy using this policy will elect its own prefered target: the target is not shared accross the proxy family (for this behaviour please take a look at FirstAvailableIdenticalAllProxies)

See Also:

Revisions:

2002/08/24: Sacha Labourey

  1. Use the target repository
  2. First choice is randomly selected to distribute the initial load
  3. When the list of targets change, we try to keep using the same previously elected target node if it still exists. Previously, we were working with the position id of the target node, thus if the list order changed, we were switching to another node while our prefered node was still up
(src) , Serialized Form

Field Summary
protected  java.lang.Object electedTarget
           
 
Constructor Summary
FirstAvailable()
           
 
Method Summary
 java.lang.Object chooseTarget(FamilyClusterInfo (src)  clusterFamily)
          Called when the stub wishes to know on which node the next invocation must be performed.
 java.lang.Object chooseTarget(FamilyClusterInfo (src)  clusterFamily, Invocation (src)  routingDecision)
          Called when the stub wishes to know on which node the next invocation must be performed.
 void init(HARMIClient (src)  father)
          Initialize the policy with a reference to its parent stub.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

electedTarget

protected transient java.lang.Object electedTarget
Constructor Detail

FirstAvailable

public FirstAvailable()
Method Detail

init

public void init(HARMIClient (src)  father)
Description copied from interface: LoadBalancePolicy (src)
Initialize the policy with a reference to its parent stub. the load-balancing policy implementation can use HARMIClient data to take its decision

Specified by:
init in interface LoadBalancePolicy (src)
Parameters:
father - The stub that owns the policy

chooseTarget

public java.lang.Object chooseTarget(FamilyClusterInfo (src)  clusterFamily)
Description copied from interface: LoadBalancePolicy (src)
Called when the stub wishes to know on which node the next invocation must be performed.

Specified by:
chooseTarget in interface LoadBalancePolicy (src)
Parameters:
clusterFamily - A list of potential target nodes
Returns:
The selected target for the next invocation

chooseTarget

public java.lang.Object chooseTarget(FamilyClusterInfo (src)  clusterFamily,
                                     Invocation (src)  routingDecision)
Description copied from interface: LoadBalancePolicy (src)
Called when the stub wishes to know on which node the next invocation must be performed.

Specified by:
chooseTarget in interface LoadBalancePolicy (src)
Parameters:
clusterFamily - A list of potential target nodes
routingDecision - The actual invocation object if the policy wants to have some kind of invocation-based routing strategy
Returns:
The selected target for the next invocation