org.apache.synapse.endpoints
Class LoadbalanceEndpoint

java.lang.Object
  extended by org.apache.synapse.FaultHandler
      extended by org.apache.synapse.endpoints.AbstractEndpoint
          extended by org.apache.synapse.endpoints.LoadbalanceEndpoint
All Implemented Interfaces:
Endpoint, ManagedLifecycle, Nameable, PropertyInclude, SynapseArtifact
Direct Known Subclasses:
DynamicLoadbalanceEndpoint, SALoadbalanceEndpoint

public class LoadbalanceEndpoint
extends AbstractEndpoint

A Load balance endpoint contains multiple child endpoints. It routes messages according to the specified load balancing algorithm. This will assume that all immediate child endpoints are identical in state (state is replicated) or state is not maintained at those endpoints. If an endpoint is failing, the failed endpoint is marked as inactive and the message sent to the next endpoint obtained using the load balancing algorithm. If all the endpoints have failed and a parent endpoint is available, onChildEndpointFail(...) method of parent endpoint is called. If a parent is not available, this will call next FaultHandler for the message context.


Field Summary
 
Fields inherited from class org.apache.synapse.endpoints.AbstractEndpoint
anonymous, errorHandler, fileName, initialized, isClusteringEnabled, log, trace
 
Constructor Summary
LoadbalanceEndpoint()
           
 
Method Summary
 void destroy()
          This method should implement the destroying of the implemented parts of the configuration.
 LoadbalanceAlgorithm getAlgorithm()
           
 List<Member> getMembers()
           
protected  Endpoint getNextChild(MessageContext synCtx)
           
 void init(SynapseEnvironment synapseEnvironment)
          This method should implement the initialization of the implemented parts of the configuration.
 boolean isFailover()
           
 void onChildEndpointFail(Endpoint endpoint, MessageContext synMessageContext)
          Endpoints that contain other endpoints should implement this method.
 boolean readyToSend()
          If this endpoint is in inactive state, checks if all immediate child endpoints are still failed.
 void send(MessageContext synCtx)
          Sends the message context according to an endpoint specific behavior.
 void setAlgorithm(LoadbalanceAlgorithm algorithm)
           
 void setFailover(boolean failover)
           
 void setMembers(List<Member> members)
           
 void startApplicationMembershipTimer()
           
 
Methods inherited from class org.apache.synapse.endpoints.AbstractEndpoint
addProperties, addProperty, evaluateProperties, getChildren, getContext, getDefinition, getDescription, getErrorHandler, getFileName, getMetricsMBean, getName, getParentEndpoint, getProperties, getProperty, handleException, handleException, informFailure, isAnonymous, isInitialized, isLeafEndpoint, isRetryDisabled, isSuspendFault, isTimeout, isTraceOn, isTraceOrDebugOn, logOnChildEndpointFail, onFault, onSuccess, prepareForEndpointStatistics, removeProperty, setAnonymous, setChildren, setDefinition, setDescription, setEnableMBeanStats, setErrorHandler, setErrorOnMessage, setFileName, setName, setParentEndpoint, toString, traceOrDebug
 
Methods inherited from class org.apache.synapse.FaultHandler
getStackTrace, handleFault, handleFault
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

LoadbalanceEndpoint

public LoadbalanceEndpoint()
Method Detail

init

public void init(SynapseEnvironment synapseEnvironment)
Description copied from interface: ManagedLifecycle
This method should implement the initialization of the implemented parts of the configuration.

Specified by:
init in interface ManagedLifecycle
Overrides:
init in class AbstractEndpoint
Parameters:
synapseEnvironment - SynapseEnvironment to be used for initialization

destroy

public void destroy()
Description copied from interface: ManagedLifecycle
This method should implement the destroying of the implemented parts of the configuration.

Specified by:
destroy in interface ManagedLifecycle
Overrides:
destroy in class AbstractEndpoint

send

public void send(MessageContext synCtx)
Description copied from interface: Endpoint
Sends the message context according to an endpoint specific behavior.

Specified by:
send in interface Endpoint
Overrides:
send in class AbstractEndpoint
Parameters:
synCtx - MessageContext to be sent.

readyToSend

public boolean readyToSend()
If this endpoint is in inactive state, checks if all immediate child endpoints are still failed. If so returns false. If at least one child endpoint is in active state, sets this endpoint's state to active and returns true. As this a sessionless load balancing endpoint having one active child endpoint is enough to consider this as active.

Specified by:
readyToSend in interface Endpoint
Overrides:
readyToSend in class AbstractEndpoint
Returns:
true if active. false otherwise.

onChildEndpointFail

public void onChildEndpointFail(Endpoint endpoint,
                                MessageContext synMessageContext)
Description copied from interface: Endpoint
Endpoints that contain other endpoints should implement this method. It will be called if a child endpoint causes an exception. Action to be taken on such failure is up to the implementation. But it is good practice to first try addressing the issue. If it can't be addressed propagate the exception to parent endpoint by calling parent endpoint's onChildEndpointFail(...) method.

Specified by:
onChildEndpointFail in interface Endpoint
Overrides:
onChildEndpointFail in class AbstractEndpoint
Parameters:
endpoint - The child endpoint which caused the exception.
synMessageContext - MessageContext that was used in the failed attempt.

isFailover

public boolean isFailover()

setFailover

public void setFailover(boolean failover)

getAlgorithm

public LoadbalanceAlgorithm getAlgorithm()

setAlgorithm

public void setAlgorithm(LoadbalanceAlgorithm algorithm)

getNextChild

protected Endpoint getNextChild(MessageContext synCtx)

setMembers

public void setMembers(List<Member> members)

getMembers

public List<Member> getMembers()

startApplicationMembershipTimer

public void startApplicationMembershipTimer()


Copyright © 2005-2012 Apache Software Foundation. All Rights Reserved.