Class McastService
java.lang.Object
org.apache.catalina.tribes.membership.McastService
- All Implemented Interfaces:
McastServiceMBean,MembershipListener,MembershipService,MessageListener
public class McastService
extends Object
implements MembershipService, MembershipListener, MessageListener, McastServiceMBean
A membership implementation using simple multicast.
This is the representation of a multicast membership service.
This class is responsible for maintaining a list of active cluster nodes in the cluster.
If a node fails to send out a heartbeat, the node will be dismissed.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected byte[]protected static final Member[]Return all the membersprotected McastServiceImplA handle to the actual low level implementationprotected MembershipListenerA membership listener delegate (should be the cluster :)protected MemberImplThe local memberprotected MessageListenerA message listener delegate for broadcastsprotected byte[]protected PropertiesThe implementation specific propertiesprotected static final StringManagerThe string manager for this package.Fields inherited from interface org.apache.catalina.tribes.MembershipService
MBR_RX, MBR_TX -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanaccept(ChannelMessage msg) voidbroadcast(ChannelMessage message) Broadcasts a message to all members.findMemberByName(String name) Return the member by namegetBind()Return the channel that is related to this MembershipServicebyte[]longlongbooleangetLocalMember(boolean alive) Get the local member.Retrieve the specified member from the membership.Member[]String[]Return all the members by namebyte[]intgetPort()intbooleanlongintintgetTtl()booleanhas members?protected voidhasProperty(Properties properties, String name) Check if a required property is available.static voidSimple test programvoidmemberAdded(Member member) A member was added to the groupvoidmemberDisappeared(Member member) Callback from the impl when a new member has been receivedvoidReceive a message from the IO components in the Channel stackvoidRemove the membership listenervoidvoidsetAddress(String addr) voidvoidsetChannel(Channel channel) Set the channel that is related to this MembershipServiceprotected voidsetDefaults(Properties properties) voidsetDomain(byte[] domain) voidvoidsetDropTime(long time) voidsetFrequency(long time) voidsetLocalLoopbackDisabled(boolean localLoopbackDisabled) voidsetLocalMemberProperties(String listenHost, int listenPort, int securePort, int udpPort) Sets the local member properties for broadcasting.voidsetMcastBindAddress(String bindaddr) voidsetMcastDropTime(long time) voidsetMembershipListener(MembershipListener listener) Add a membership listener, this version only supports one listener per service, so calling this method twice will result in only the second listener being active.voidsetMessageListener(MessageListener listener) voidsetPayload(byte[] payload) Set a payload to be broadcasted with each membership broadcast.voidsetPort(int port) voidsetProperties(Properties properties) Sets the properties for the membership service.voidsetRecoveryCounter(int recoveryCounter) voidsetRecoveryEnabled(boolean recoveryEnabled) voidsetRecoverySleepTime(long recoverySleepTime) voidsetSoTimeout(int mcastSoTimeout) voidsetTtl(int mcastTTL) voidstart()Start broadcasting and listening to membership pingsvoidstart(int level) Starts the membership service.voidstop(int svc) Stop broadcasting and listening to membership pings
-
Field Details
-
sm
The string manager for this package. -
properties
The implementation specific properties -
impl
A handle to the actual low level implementation -
listener
A membership listener delegate (should be the cluster :) -
msglistener
A message listener delegate for broadcasts -
localMember
The local member -
payload
protected byte[] payload -
domain
protected byte[] domain -
EMPTY_MEMBERS
Return all the members
-
-
Constructor Details
-
McastService
public McastService()Create a membership service.
-
-
Method Details
-
setProperties
Sets the properties for the membership service.- Specified by:
setPropertiesin interfaceMembershipService- Parameters:
properties-
All are required
1. mcastPort - the port to listen to
2. mcastAddress - the mcast group address
4. bindAddress - the bind address if any - only one that can be null
5. memberDropTime - the time a member is gone before it is considered gone.
6. mcastFrequency - the frequency of sending messages
7. tcpListenPort - the port this member listens to
8. tcpListenHost - the bind address of this member- Throws:
IllegalArgumentException- if a property is missing.
-
getProperties
- Specified by:
getPropertiesin interfaceMcastServiceMBean- Specified by:
getPropertiesin interfaceMembershipService- Returns:
- the properties for the configuration used.
-
getLocalMemberName
- Specified by:
getLocalMemberNamein interfaceMcastServiceMBean- Returns:
- the local member name
-
getLocalMember
Description copied from interface:MembershipServiceGet the local member.- Specified by:
getLocalMemberin interfaceMembershipService- Parameters:
alive-trueto set the alive time on the local member- Returns:
- the member object that defines this member
-
setLocalMemberProperties
public void setLocalMemberProperties(String listenHost, int listenPort, int securePort, int udpPort) Description copied from interface:MembershipServiceSets the local member properties for broadcasting.- Specified by:
setLocalMemberPropertiesin interfaceMembershipService- Parameters:
listenHost- Listen to hostlistenPort- Listen to portsecurePort- Use a secure portudpPort- Use UDP
-
setAddress
-
getAddress
- Specified by:
getAddressin interfaceMcastServiceMBean
-
setMcastBindAddress
-
setBind
-
getBind
- Specified by:
getBindin interfaceMcastServiceMBean
-
setPort
public void setPort(int port) -
setRecoveryCounter
public void setRecoveryCounter(int recoveryCounter) -
getRecoveryCounter
public int getRecoveryCounter()- Specified by:
getRecoveryCounterin interfaceMcastServiceMBean
-
setRecoveryEnabled
public void setRecoveryEnabled(boolean recoveryEnabled) -
getRecoveryEnabled
public boolean getRecoveryEnabled()- Specified by:
getRecoveryEnabledin interfaceMcastServiceMBean
-
setRecoverySleepTime
public void setRecoverySleepTime(long recoverySleepTime) -
getRecoverySleepTime
public long getRecoverySleepTime()- Specified by:
getRecoverySleepTimein interfaceMcastServiceMBean
-
setLocalLoopbackDisabled
public void setLocalLoopbackDisabled(boolean localLoopbackDisabled) -
getLocalLoopbackDisabled
public boolean getLocalLoopbackDisabled()- Specified by:
getLocalLoopbackDisabledin interfaceMcastServiceMBean
-
getPort
public int getPort()- Specified by:
getPortin interfaceMcastServiceMBean
-
setFrequency
public void setFrequency(long time) -
getFrequency
public long getFrequency()- Specified by:
getFrequencyin interfaceMcastServiceMBean
-
setMcastDropTime
public void setMcastDropTime(long time) -
setDropTime
public void setDropTime(long time) -
getDropTime
public long getDropTime()- Specified by:
getDropTimein interfaceMcastServiceMBean
-
hasProperty
Check if a required property is available.- Parameters:
properties- The set of propertiesname- The property to check for
-
start
Start broadcasting and listening to membership pings- Specified by:
startin interfaceMembershipService- Throws:
Exception- if a IO error occurs
-
start
Description copied from interface:MembershipServiceStarts the membership service. If a membership listeners is added the listener will start to receive membership events.- Specified by:
startin interfaceMembershipService- Parameters:
level- - level MBR_RX starts listening for members, level MBR_TX starts broad casting the server- Throws:
Exception- if the service fails to start.IllegalArgumentException- if the level is incorrect.
-
stop
public void stop(int svc) Stop broadcasting and listening to membership pings- Specified by:
stopin interfaceMembershipService- Parameters:
svc- - level MBR_RX stops listening for members, level MBR_TX stops broad casting the server
-
getMembersByName
Return all the members by name- Specified by:
getMembersByNamein interfaceMcastServiceMBean- Specified by:
getMembersByNamein interfaceMembershipService- Returns:
- all members by name
-
findMemberByName
Return the member by name- Specified by:
findMemberByNamein interfaceMcastServiceMBean- Specified by:
findMemberByNamein interfaceMembershipService- Parameters:
name- The member name- Returns:
- the member
-
hasMembers
public boolean hasMembers()has members?- Specified by:
hasMembersin interfaceMcastServiceMBean- Specified by:
hasMembersin interfaceMembershipService- Returns:
- true if the the group contains members
-
getMember
Description copied from interface:MembershipServiceRetrieve the specified member from the membership.- Specified by:
getMemberin interfaceMembershipService- Parameters:
mbr- The member to retrieve- Returns:
- the member
-
getMembers
- Specified by:
getMembersin interfaceMembershipService- Returns:
- a list of all the members in the cluster.
-
setMembershipListener
Add a membership listener, this version only supports one listener per service, so calling this method twice will result in only the second listener being active.- Specified by:
setMembershipListenerin interfaceMembershipService- Parameters:
listener- The listener
-
setMessageListener
-
removeMessageListener
public void removeMessageListener() -
removeMembershipListener
public void removeMembershipListener()Remove the membership listener- Specified by:
removeMembershipListenerin interfaceMembershipService
-
memberAdded
Description copied from interface:MembershipListenerA member was added to the group- Specified by:
memberAddedin interfaceMembershipListener- Parameters:
member- Member - the member that was added
-
memberDisappeared
Callback from the impl when a new member has been received- Specified by:
memberDisappearedin interfaceMembershipListener- Parameters:
member- The member- See Also:
-
messageReceived
Description copied from interface:MessageListenerReceive a message from the IO components in the Channel stack- Specified by:
messageReceivedin interfaceMessageListener- Parameters:
msg- ChannelMessage
-
accept
- Specified by:
acceptin interfaceMessageListener
-
broadcast
Description copied from interface:MembershipServiceBroadcasts a message to all members.- Specified by:
broadcastin interfaceMembershipService- Parameters:
message- The message to broadcast- Throws:
ChannelException- Message broadcast failed
-
getSoTimeout
public int getSoTimeout()- Specified by:
getSoTimeoutin interfaceMcastServiceMBean
-
setSoTimeout
public void setSoTimeout(int mcastSoTimeout) -
getTtl
public int getTtl()- Specified by:
getTtlin interfaceMcastServiceMBean
-
getPayload
public byte[] getPayload() -
getDomain
public byte[] getDomain()- Specified by:
getDomainin interfaceMcastServiceMBean
-
setTtl
public void setTtl(int mcastTTL) -
setPayload
public void setPayload(byte[] payload) Description copied from interface:MembershipServiceSet a payload to be broadcasted with each membership broadcast.- Specified by:
setPayloadin interfaceMembershipService- Parameters:
payload- byte[]
-
setDomain
public void setDomain(byte[] domain) - Specified by:
setDomainin interfaceMembershipService
-
setDomain
-
getChannel
Description copied from interface:MembershipServiceReturn the channel that is related to this MembershipService- Specified by:
getChannelin interfaceMembershipService- Returns:
- Channel
-
setChannel
Description copied from interface:MembershipServiceSet the channel that is related to this MembershipService- Specified by:
setChannelin interfaceMembershipService- Parameters:
channel- The channel
-
setDefaults
-
main
Simple test program- Parameters:
args- Command-line arguments- Throws:
Exception- If an error occurs
-