org.jboss.ha.framework.interfaces
Interface HAPartition

All Known Implementing Classes:
HAPartitionImpl

public interface HAPartition

Version:
$Revision: 1.10.4.5 $

Revisions:

28.07.2002 - Sacha Labourey:

Author:
Bill Burke., Sacha Labourey.

Nested Class Summary
static interface HAPartition.AsynchHAMembershipExtendedListener
          A tagging interface for HAMembershipExtendedListener callbacks that will be performed in a thread seperate from the JG protocl handler thread.
static interface HAPartition.AsynchHAMembershipListener
          A tagging interface for HAMembershipListener callbacks that will be performed in a thread seperate from the JG protocl handler thread.
static interface HAPartition.HAMembershipExtendedListener
           
static interface HAPartition.HAMembershipListener
          When a new node joins the cluster or an existing node leaves the cluster (or simply dies), membership events are raised.
static interface HAPartition.HAPartitionStateTransfer
          State management is higly important for clustered services.
 
Method Summary
 void callAsynchMethodOnCluster(String serviceName, String methodName, Object[] args, boolean excludeSelf)
          Deprecated. Use callAsynchMethodOnCluster(String, String, Object[], Class[], boolean) instead
 void callAsynchMethodOnCluster(String serviceName, String methodName, Object[] args, Class[] types, boolean excludeSelf)
          Invoke a asynchronous RPC call on all nodes of the partition/cluster.
 ArrayList callMethodOnCluster(String serviceName, String methodName, Object[] args, boolean excludeSelf)
          Deprecated. Use callMethodOnCluster(String, String, Object[], Class[], boolean) instead
 ArrayList callMethodOnCluster(String serviceName, String methodName, Object[] args, Class[] types, boolean excludeSelf)
          Invoke a synchronous RPC call on all nodes of the partition/cluster
 ArrayList callMethodOnCoordinatorNode(String serviceName, String methodName, Object[] args, Class[] types, boolean excludeSelf)
          Calls method on Cluster coordinator node only.
 boolean getAllowSynchronousMembershipNotifications()
          Returns whether this partition will synchronously notify any HAMembershipListeners of membership changes using the calling thread from the underlying ClusterPartition.
 ClusterNode getClusterNode()
          Return member node for the current cluster node.
 ClusterNode[] getClusterNodes()
          Return the member nodes that built the current view i.e.
 Vector getCurrentView()
          Return the list of member nodes that built the current view i.e.
 long getCurrentViewId()
          Each time the partition topology changes, a new view is computed.
 DistributedReplicantManager getDistributedReplicantManager()
          Accessor to the DRM that is linked to this partition.
 DistributedState getDistributedStateService()
          Accessor the the DistributedState (DS) that is linked to this partition.
 String getNodeName()
          Return the name of this node in the current partition.
 String getPartitionName()
          The name of the partition.
 void registerMembershipListener(HAPartition.HAMembershipListener listener)
          Subscribes to receive HAPartition.HAMembershipListener events.
 void registerRPCHandler(String serviceName, Object handler)
          The partition receives RPC calls from other nodes in the cluster and demultiplex them, according to a service name, to a particular service.
 void setAllowSynchronousMembershipNotifications(boolean allowSync)
          Sets whether this partition will synchronously notify any HAMembershipListeners of membership changes using the calling thread from the underlying ClusterPartition.
 void subscribeToStateTransferEvents(String serviceName, HAPartition.HAPartitionStateTransfer subscriber)
          Register a service that will participate in state transfer protocol and receive callbacks
 void unregisterMembershipListener(HAPartition.HAMembershipListener listener)
          Unsubscribes from receiving HAPartition.HAMembershipListener events.
 void unregisterRPCHandler(String serviceName, Object subscriber)
          Unregister the service from the partition
 void unsubscribeFromStateTransferEvents(String serviceName, HAPartition.HAPartitionStateTransfer subscriber)
          Unregister a service from state transfer callbacks.
 

Method Detail

getNodeName

String getNodeName()
Return the name of this node in the current partition. The name is dynamically determined by the partition. The name will be the String returned by getClusterNode().getName().

Returns:
The node name
See Also:
getClusterNode()

getPartitionName

String getPartitionName()
The name of the partition. Either set when creating the partition (MBEAN definition) or uses the default name

Returns:
Name of the current partition

getDistributedReplicantManager

DistributedReplicantManager getDistributedReplicantManager()
Accessor to the DRM that is linked to this partition.

Returns:
the DRM linked to this partition

getDistributedStateService

DistributedState getDistributedStateService()
Accessor the the DistributedState (DS) that is linked to this partition.

Returns:
the DistributedState service

registerRPCHandler

void registerRPCHandler(String serviceName,
                        Object handler)
The partition receives RPC calls from other nodes in the cluster and demultiplex them, according to a service name, to a particular service. Consequently, each service must first subscribe with a particular service name in the partition. The subscriber does not need to implement any specific interface: the call is handled dynamically through reflection.

Parameters:
serviceName - Name of the subscribing service (demultiplexing key)
handler - object to be called when receiving a RPC for its key.

unregisterRPCHandler

void unregisterRPCHandler(String serviceName,
                          Object subscriber)
Unregister the service from the partition

Parameters:
serviceName - Name of the service key (on which the demultiplexing occurs)
subscriber - The target object that unsubscribes

callMethodOnCluster

ArrayList callMethodOnCluster(String serviceName,
                              String methodName,
                              Object[] args,
                              Class[] types,
                              boolean excludeSelf)
                              throws Exception
Invoke a synchronous RPC call on all nodes of the partition/cluster

Parameters:
serviceName - Name of the target service name on which calls are de-multiplexed
methodName - name of the Java method to be called on remote services
args - array of Java Object representing the set of parameters to be given to the remote method
types - The types of the parameters
excludeSelf - indicates if the RPC must also be made on the current node of the partition or only on remote nodes
Returns:
an array of answers from remote nodes
Throws:
Exception - Throws if a communication exception occurs

callMethodOnCluster

ArrayList callMethodOnCluster(String serviceName,
                              String methodName,
                              Object[] args,
                              boolean excludeSelf)
                              throws Exception
Deprecated. Use callMethodOnCluster(String, String, Object[], Class[], boolean) instead

Parameters:
serviceName -
methodName -
args -
excludeSelf -
Returns:
Throws:
Exception

callAsynchMethodOnCluster

void callAsynchMethodOnCluster(String serviceName,
                               String methodName,
                               Object[] args,
                               Class[] types,
                               boolean excludeSelf)
                               throws Exception
Invoke a asynchronous RPC call on all nodes of the partition/cluster. The call will return immediately and will not wait that the nodes answer. Thus no answer is available.

Parameters:
serviceName - Name of the target service name on which calls are de-multiplexed
methodName - name of the Java method to be called on remote services
args - array of Java Object representing the set of parameters to be given to the remote method
types - The types of the parameters
excludeSelf - indicates if the RPC must also be made on the current node of the partition or only on remote nodes
Throws:
Exception - Throws if a communication exception occurs

callAsynchMethodOnCluster

void callAsynchMethodOnCluster(String serviceName,
                               String methodName,
                               Object[] args,
                               boolean excludeSelf)
                               throws Exception
Deprecated. Use callAsynchMethodOnCluster(String, String, Object[], Class[], boolean) instead

Parameters:
serviceName -
methodName -
args -
excludeSelf -
Throws:
Exception

callMethodOnCoordinatorNode

ArrayList callMethodOnCoordinatorNode(String serviceName,
                                      String methodName,
                                      Object[] args,
                                      Class[] types,
                                      boolean excludeSelf)
                                      throws Exception
Calls method on Cluster coordinator node only. The cluster coordinator node is the first node to join the cluster or the first node in the current cluster view.

Parameters:
serviceName - Name of the target service name on which calls are de-multiplexed
methodName - name of the Java method to be called on remote services
args - array of Java Object representing the set of parameters to be given to the remote method
types - The types of the parameters node of the partition or only on remote nodes
excludeSelf - indicates if the RPC will be made on the current node even if the current node is the coordinator
Returns:
an array of answers from remote nodes
Throws:
Exception - Throws if a communication exception occurs

subscribeToStateTransferEvents

void subscribeToStateTransferEvents(String serviceName,
                                    HAPartition.HAPartitionStateTransfer subscriber)
Register a service that will participate in state transfer protocol and receive callbacks

Parameters:
serviceName - Name of the service that subscribes for state stransfer events. This name must be identical for all identical services in the cluster.
subscriber - Object implementing HAPartition.HAPartitionStateTransfer and providing or receiving state transfer callbacks

unsubscribeFromStateTransferEvents

void unsubscribeFromStateTransferEvents(String serviceName,
                                        HAPartition.HAPartitionStateTransfer subscriber)
Unregister a service from state transfer callbacks.

Parameters:
serviceName - Name of the service that participates in the state transfer protocol
subscriber - Service implementing the state transfer callback methods

registerMembershipListener

void registerMembershipListener(HAPartition.HAMembershipListener listener)
Subscribes to receive HAPartition.HAMembershipListener events.

Parameters:
listener - The membership listener object

unregisterMembershipListener

void unregisterMembershipListener(HAPartition.HAMembershipListener listener)
Unsubscribes from receiving HAPartition.HAMembershipListener events.

Parameters:
listener - The listener wishing to unsubscribe

getAllowSynchronousMembershipNotifications

boolean getAllowSynchronousMembershipNotifications()
Returns whether this partition will synchronously notify any HAMembershipListeners of membership changes using the calling thread from the underlying ClusterPartition.

Returns:
true if registered listeners that don't implement AsynchHAMembershipExtendedListener or AsynchHAMembershipListener will be notified synchronously of membership changes; false if those listeners will be notified asynchronously. Default is false.

setAllowSynchronousMembershipNotifications

void setAllowSynchronousMembershipNotifications(boolean allowSync)
Sets whether this partition will synchronously notify any HAMembershipListeners of membership changes using the calling thread from the underlying ClusterPartition.

Parameters:
allowSync - true if registered listeners that don't implement AsynchHAMembershipExtendedListener or AsynchHAMembershipListener should be notified synchronously of membership changes; false if those listeners can be notified asynchronously. Default is false.

getCurrentViewId

long getCurrentViewId()
Each time the partition topology changes, a new view is computed. A view is a list of members, the first member being the coordinator of the view. Each view also has a distinct identifier.

Returns:
The identifier of the current view

getCurrentView

Vector getCurrentView()
Return the list of member nodes that built the current view i.e. the current partition.

Returns:
An array of Strings containing the node names

getClusterNodes

ClusterNode[] getClusterNodes()
Return the member nodes that built the current view i.e. the current partition.

Returns:
An array of ClusterNode listing the current members of the partitionn. This array will be in the same order in all nodes in the cluster that have received the current view.

getClusterNode

ClusterNode getClusterNode()
Return member node for the current cluster node.

Returns:
ClusterNode containing the current node name


Copyright © 2002 JBoss Group, LLC. All Rights Reserved.