Package org.apache.catalina.tribes.membership.cloud

# Class DNSMembershipProvider

java.lang.Object
org.apache.catalina.tribes.membership.MembershipProviderBase
org.apache.catalina.tribes.membership.cloud.CloudMembershipProvider
org.apache.catalina.tribes.membership.cloud.DNSMembershipProvider

All Implemented Interfaces:
  `ChannelListener`, `Heartbeat`, `MembershipProvider`

public class DNSMembershipProvider extends CloudMembershipProvider
A `MembershipProvider` that uses DNS to retrieve the members of a cluster.

Configuration example for Kubernetes

`server.xml`

     <Server ...

       <Service ...

         <Engine ...

           <Host ...

             <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
               <Channel className="org.apache.catalina.tribes.group.GroupChannel">
                 <Membership className="org.apache.catalina.tribes.membership.cloud.CloudMembershipService"
                     membershipProviderClassName="org.apache.catalina.tribes.membership.cloud.DNSMembershipProvider"/>
               </Channel>
             </Cluster>
             ...

minimal example for the Service my-tomcat-app-membership, note the selector
`dns-membership-service.yml`

     apiVersion: v1
     kind: Service
     metadata:
       annotations:
         service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
         description: "The service for tomcat cluster membership."
       name: my-tomcat-app-membership
     spec:
       clusterIP: None
       selector:
         app: my-tomcat-app

First Tomcat pod minimal example, note the labels that must correspond to the selector in the service.
`tomcat1.yml`

     apiVersion: v1
     kind: Pod
     metadata:
       name: tomcat1
       labels:
         app: my-tomcat-app
     spec:
       containers:
       - name: tomcat
         image: tomcat
         ports:
         - containerPort: 8080

Environment variable configuration
`DNS_MEMBERSHIP_SERVICE_NAME=my-tomcat-app-membership`

## Field Summary

### Fields inherited from class org.apache.catalina.tribes.membership.cloud.CloudMembershipProvider

`connectionTimeout, CUSTOM_ENV_PREFIX, expirationTime, headers, localIp, md5, port, readTimeout, sm, startTime, streamProvider, url`

### Fields inherited from class org.apache.catalina.tribes.membership.MembershipProviderBase

`executor, membership, membershipListener, service`

## Constructor Summary

Constructors
Constructor
Description
`DNSMembershipProvider()`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`accept(Serializable msg, Member sender)`
Invoked by the channel to determine if the listener will process this message or not.
`protected Member[]`
`fetchMembers()`
Fetch current cluster members from the cloud orchestration.
`void`
`start(int level)`
Start the membership provider.
`boolean`
`stop(int level)`
Stop the membership provider.

### Methods inherited from class org.apache.catalina.tribes.membership.cloud.CloudMembershipProvider

`getEnv, getNamespace, heartbeat, init, messageReceived, updateMember`

### Methods inherited from class org.apache.catalina.tribes.membership.MembershipProviderBase

`getMember, getMembers, hasMembers, setMembershipListener, setMembershipService`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### DNSMembershipProvider

public DNSMembershipProvider()

## Method Details

### start

public void start(int level) throws Exception
Description copied from interface: `MembershipProvider`
Start the membership provider.

Specified by:
  `start` in interface `MembershipProvider`
Overrides:
  `start` in class `CloudMembershipProvider`
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:
  `Exception` - if an error occurs

### stop

public boolean stop(int level) throws Exception
Description copied from interface: `MembershipProvider`
Stop the membership provider.

Specified by:
  `stop` in interface `MembershipProvider`
Overrides:
  `stop` in class `CloudMembershipProvider`
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:
  `true` if successful
Throws:
  `Exception` - if an error occurs

### fetchMembers

protected Member[] fetchMembers()
Description copied from class: `CloudMembershipProvider`
Fetch current cluster members from the cloud orchestration.

Specified by:
  `fetchMembers` in class `CloudMembershipProvider`
Returns:
  the member array

### accept

public boolean accept(Serializable msg, Member sender)
Description copied from interface: `ChannelListener`
Invoked by the channel to determine if the listener will process this message or not.

Specified by:
  `accept` in interface `ChannelListener`
Overrides:
  `accept` in class `CloudMembershipProvider`
Parameters:
  `msg` - Serializable
  `sender` - Member
Returns:
  boolean