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>
             ...

`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
       ports:
       - name: membership
         port: 8888
       selector:
         app: my-tomcat-app

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
`DNSMembershipProvider()`

### Method Summary

All Methods Instance Methods Concrete Methods
`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)`
`boolean` `stop​(int level)`

### 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`

### Methods inherited from interface org.apache.catalina.tribes.ChannelListener

`equals, hashCode`

### Constructor Detail

#### DNSMembershipProvider

    public DNSMembershipProvider()

### Method Detail

#### start

    public void start​(int level)
               throws Exception

Specified by:
  `start` in interface `MembershipProvider`
Overrides:
  `start` in class `CloudMembershipProvider`
Throws:
  `Exception`

#### stop

    public boolean stop​(int level)
                 throws Exception

Specified by:
  `stop` in interface `MembershipProvider`
Overrides:
  `stop` in class `CloudMembershipProvider`
Throws:
  `Exception`

#### 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