Class CloudMembershipProvider
- java.lang.Object
-
- org.apache.catalina.tribes.membership.MembershipProviderBase
-
- org.apache.catalina.tribes.membership.cloud.CloudMembershipProvider
-
- All Implemented Interfaces:
ChannelListener,Heartbeat,MembershipProvider
- Direct Known Subclasses:
DNSMembershipProvider,KubernetesMembershipProvider
public abstract class CloudMembershipProvider extends MembershipProviderBase implements Heartbeat, ChannelListener
Abstract base class for cloud-based membership providers.
-
-
Field Summary
Fields Modifier and Type Field Description protected intconnectionTimeoutConnection timeout in milliseconds.protected static java.lang.StringCUSTOM_ENV_PREFIXPrefix for custom environment variables.protected longexpirationTimeMember expiration time in milliseconds.protected java.util.Map<java.lang.String,java.lang.String>headersHTTP headers for cloud API requests.protected java.lang.StringlocalIpThe local IP address.protected intportThe local port number.protected intreadTimeoutRead timeout in milliseconds.protected static StringManagersmString manager for this class.protected java.time.InstantstartTimeThe time when this provider started.protected StreamProviderstreamProviderThe provider for cloud API streams.protected java.lang.StringurlThe URL for the cloud membership service.-
Fields inherited from class org.apache.catalina.tribes.membership.MembershipProviderBase
executor, membership, membershipListener, service
-
-
Constructor Summary
Constructors Constructor Description CloudMembershipProvider()Default constructor.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description booleanaccept(java.io.Serializable msg, Member sender)Invoked by the channel to determine if the listener will process this message or not.protected static byte[]digest(byte[] input)Thread safe MD5 digest.protected abstract Member[]fetchMembers()Fetch current cluster members from the cloud orchestration.protected static java.lang.StringgetEnv(java.lang.String... keys)Get value of environment variable.protected java.lang.StringgetNamespace()Get the Kubernetes namespace, or "tomcat" if the Kubernetes environment variable cannot be found (with a warning log about the missing namespace).voidheartbeat()Heartbeat invocation for resources cleanup etcvoidinit(java.util.Properties properties)Initialize the membership provider with the specified configuration.voidmessageReceived(java.io.Serializable msg, Member sender)Receive a message from the channelvoidstart(int level)Start the membership provider.booleanstop(int level)Stop the membership provider.protected voidupdateMember(Member member, boolean add)Add or remove specified member.-
Methods inherited from class org.apache.catalina.tribes.membership.MembershipProviderBase
getMember, getMembers, hasMembers, setMembershipListener, setMembershipService
-
-
-
-
Field Detail
-
sm
protected static final StringManager sm
String manager for this class.
-
CUSTOM_ENV_PREFIX
protected static final java.lang.String CUSTOM_ENV_PREFIX
Prefix for custom environment variables.- See Also:
- Constant Field Values
-
url
protected java.lang.String url
The URL for the cloud membership service.
-
streamProvider
protected StreamProvider streamProvider
The provider for cloud API streams.
-
connectionTimeout
protected int connectionTimeout
Connection timeout in milliseconds.
-
readTimeout
protected int readTimeout
Read timeout in milliseconds.
-
startTime
protected java.time.Instant startTime
The time when this provider started.
-
headers
protected java.util.Map<java.lang.String,java.lang.String> headers
HTTP headers for cloud API requests.
-
localIp
protected java.lang.String localIp
The local IP address.
-
port
protected int port
The local port number.
-
expirationTime
protected long expirationTime
Member expiration time in milliseconds.
-
-
Method Detail
-
digest
protected static byte[] digest(byte[] input)
Thread safe MD5 digest.- Parameters:
input- The bytes to digest- Returns:
- The MD5 digest for the given input
-
getEnv
protected static java.lang.String getEnv(java.lang.String... keys)
Get value of environment variable.- Parameters:
keys- the environment variables- Returns:
- the env variables values, or null if not found
-
getNamespace
protected java.lang.String getNamespace()
Get the Kubernetes namespace, or "tomcat" if the Kubernetes environment variable cannot be found (with a warning log about the missing namespace).- Returns:
- the namespace
-
init
public void init(java.util.Properties properties) throws java.io.IOExceptionDescription copied from interface:MembershipProviderInitialize the membership provider with the specified configuration.- Specified by:
initin interfaceMembershipProvider- Overrides:
initin classMembershipProviderBase- Parameters:
properties- configuration- Throws:
java.io.IOException
-
start
public void start(int level) throws java.lang.ExceptionDescription copied from interface:MembershipProviderStart the membership provider.- Specified by:
startin interfaceMembershipProvider- Parameters:
level- the readiness level- Channel.DEFAULT - will start all services
- Channel.MBR_RX_SEQ - starts the membership receiver
- Channel.MBR_TX_SEQ - starts the membership broadcaster
- Throws:
java.lang.Exception- if an error occurs
-
stop
public boolean stop(int level) throws java.lang.ExceptionDescription copied from interface:MembershipProviderStop the membership provider.- Specified by:
stopin interfaceMembershipProvider- Parameters:
level- the readiness level- Channel.DEFAULT - will stop all services
- Channel.MBR_RX_SEQ - stops the membership receiver
- Channel.MBR_TX_SEQ - stops the membership broadcaster
- Returns:
trueif successful- Throws:
java.lang.Exception- if an error occurs
-
heartbeat
public void heartbeat()
Description copied from interface:HeartbeatHeartbeat invocation for resources cleanup etc
-
fetchMembers
protected abstract Member[] fetchMembers()
Fetch current cluster members from the cloud orchestration.- Returns:
- the member array
-
updateMember
protected void updateMember(Member member, boolean add)
Add or remove specified member.- Parameters:
member- the member to addadd- true if the member is added, false otherwise
-
messageReceived
public void messageReceived(java.io.Serializable msg, Member sender)Description copied from interface:ChannelListenerReceive a message from the channel- Specified by:
messageReceivedin interfaceChannelListener- Parameters:
msg- Serializablesender- - the source of the message
-
accept
public boolean accept(java.io.Serializable msg, Member sender)Description copied from interface:ChannelListenerInvoked by the channel to determine if the listener will process this message or not.- Specified by:
acceptin interfaceChannelListener- Parameters:
msg- Serializablesender- Member- Returns:
- boolean
-
-