|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.sun.enterprise.ee.cms.impl.jxta.GroupHandleImpl
public final class GroupHandleImpl
Implementation of GroupHandle interface.
Constructor Summary | |
---|---|
GroupHandleImpl(String groupName,
String serverToken)
|
Method Summary | |
---|---|
List<String> |
getAllCurrentMembers()
returns a List containing the current group membership including spectator members. |
List<String> |
getAllCurrentMembersWithStartTimes()
returns a List of strings containing the current group membership including spectator members. |
List<String> |
getCurrentAliveOrReadyMembers()
* returns only the members that are in ALIVE or READY state |
List<String> |
getCurrentCoreMembers()
returns a List containing the current core members in the group. |
List<String> |
getCurrentCoreMembersWithStartTimes()
returns a List of strings containing the current core members in the group. |
DistributedStateCache |
getDistributedStateCache()
returns a DistributedStateCache object that provides the ability to set and retrieve CachedStates. |
String |
getGroupLeader()
Return the leader of the group |
MemberStates |
getMemberState(String member)
API for giving the state of the member Calls #getMemberState(String, long, long) with implementation default values for threshold and timeout . |
MemberStates |
getMemberState(String member,
long threshold,
long timeout)
Returns the state of the member. |
List<String> |
getSuspectList()
|
boolean |
isFenced(String componentName,
String memberToken)
Provides the status of a member component's fence, if any. |
boolean |
isGroupLeader()
This is a check to find out if this peer is a group leader. |
boolean |
isMemberAlive(String memberToken)
Checks if a member is alive |
void |
lowerFence(String componentName,
String failedMemberToken)
Enables the caller to lower a logical fence that was earlier raised on a target member component. |
void |
raiseFence(String componentName,
String failedMemberToken)
Enables the caller to raise a logical fence on a specified target member token's component. |
void |
sendMessage(List<String> targetServerTokens,
String targetComponentName,
byte[] message)
Sends a message to a list of members in the group. |
void |
sendMessage(String componentName,
byte[] message)
Sends a message to all members of the Group. |
void |
sendMessage(String targetServerToken,
String targetComponentName,
byte[] message)
Sends a message to a single member of the group Expects a targetServerToken representing the recipient member's id, the target component name in the target recipient member, and a byte array as parameter carrying the payload. |
String |
toString()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public GroupHandleImpl(String groupName, String serverToken)
Method Detail |
---|
public void sendMessage(String componentName, byte[] message) throws GMSException
sendMessage
in interface GroupHandle
componentName
- Destination component in remote members.message
- Payload in byte array to be delivered to the destination.
GMSException
- - any exception while sending message wrapped into GMSExceptionpublic void sendMessage(String targetServerToken, String targetComponentName, byte[] message) throws GMSException
sendMessage
in interface GroupHandle
targetServerToken
- destination member's identificationtargetComponentName
- destination member's target componentmessage
- Payload in byte array to be delivered to the destination.
GMSException
- - any exception while sending message wrapped into GMSExceptionpublic void sendMessage(List<String> targetServerTokens, String targetComponentName, byte[] message) throws GMSException
GroupHandle
sendMessage
in interface GroupHandle
targetServerTokens
- List of target server tokenstargetComponentName
- a component in the target members to which message is addressed.message
- - the payload
GMSException
- - any exception while sending message wrapped into GMSExceptionpublic DistributedStateCache getDistributedStateCache()
getDistributedStateCache
in interface GroupHandle
DistributedStateCache
public List<String> getCurrentCoreMembers()
getCurrentCoreMembers
in interface GroupHandle
public List<String> getAllCurrentMembers()
getAllCurrentMembers
in interface GroupHandle
public List<String> getCurrentCoreMembersWithStartTimes()
GroupHandle
getCurrentCoreMembersWithStartTimes
in interface GroupHandle
public List<String> getAllCurrentMembersWithStartTimes()
GroupHandle
getAllCurrentMembersWithStartTimes
in interface GroupHandle
public void raiseFence(String componentName, String failedMemberToken) throws GMSException
Failure Fencing is a group-wide protocol that, on one hand, requires members to update a shared/distributed datastructure if any of their components need to perform operations on another members' corresponding component. On the other hand, the group-wide protocol requires members to observe "Netiquette" during their startup so as to check if any of their components are being operated upon by other group members. Typically this check is performed by the respective components themselves. See the isFenced() method below for this check. When the operation is completed by the remote member component, it removes the entry from the shared datastructure. See the lowerFence() method below.
Raising the fence, places an entry into a distributed datastructure that is accessed by other members during their startup
raiseFence
in interface GroupHandle
componentName
- failedMemberToken
-
GMSException
public void lowerFence(String componentName, String failedMemberToken) throws GMSException
lowerFence
in interface GroupHandle
componentName
- target member componentfailedMemberToken
-
GMSException
public boolean isFenced(String componentName, String memberToken)
This check is mandatorily done at the time a member component is in the process of starting(note that at this point we assume that this member failed in its previous lifetime).
The boolean value returned would indicate if this member component is being recovered by any other member. The criteria for returning a boolean "true" is that this componentName-memberToken combo is present as a value for any key in the GMS DistributedStateCache. If a true is returned, for instance, this could mean that the client component should continue its startup without attempting to perform its own recovery operations.
The criteria for returning a boolean "false" is that the componentId-memberTokenId combo is not present in the list of values in the DistributedStateCache.If a boolean "false" is returned, this could mean that the client component can continue with its lifecycle startup per its normal startup policies.
isFenced
in interface GroupHandle
componentName
- memberToken
-
public boolean isMemberAlive(String memberToken)
GroupHandle
isMemberAlive
in interface GroupHandle
public String getGroupLeader()
GroupHandle
getGroupLeader
in interface GroupHandle
public boolean isGroupLeader()
GroupHandle
isGroupLeader
in interface GroupHandle
public List<String> getSuspectList()
public String toString()
toString
in class Object
public List<String> getCurrentAliveOrReadyMembers()
GroupHandle
getCurrentAliveOrReadyMembers
in interface GroupHandle
public MemberStates getMemberState(String member)
GroupHandle
threshold
and timeout
.
getMemberState
in interface GroupHandle
member
.public MemberStates getMemberState(String member, long threshold, long timeout)
GroupHandle
threshold
and timeout
enable the caller to tune this
lookup between accuracy and time it will take to complete the call. It is lowest cost to just return
the local computed concept for a member's state. threshold
parameter controls this.
If the local state is stale, then the timeout
parameter enables one to control how
long they are willing to wait for more accurate state information from the member itself.
getMemberState
in interface GroupHandle
threshold
- allows caller to specify how up-to-date the member state information has to be.
The larger this value, the better chance that this method just returns the local concept of this member's state.
The smaller this value, the better chance that the local state is not fresh enough and the method will find out directly
from the instance what its current state is.timeout
- is the time for which the caller instance should wait to get the state from the concerned member
via a network call.
if timeout and threshold are both 0, then the default values are used
if threshold is 0, then a network call is made to get the state of the member
if timeout is 0, then the caller instance checks for the state of the member stored with it within the
given threshold
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |