Purpose: Detects new members of a logical EclipseLink cluster.
Description: Each RemoteCommandManager has its own DiscoveryManager, which handles the detection of other remote command services as they become available. The DiscoveryManager is an active object (in that it extends Thread) and becomes a separate thread when it is started using startDiscovery().
Discovery is done through the use of a multicast. Each discovery manager joins the multicast group and announces itself to the group. As it receives service announcements from other discovery managers it notifies the RCM to establish connections to and from the new service.
RemoteCommandManager, java.net.MulticastSocket
| Modifier and Type | Field and Description |
|---|---|
| protected int | announcementDelay
Delay time in millis between initialization and when the announcement is sent |
| protected MulticastSocket | communicationSocket
The multicast socket used for discovery |
| public static final int | |
| public static final String | DEFAULT_MULTICAST_GROUP
Default value constants |
| public static final int | |
| public static final int | |
| protected String | multicastGroupAddress
Defines the IP address of the multicast group |
| protected int | multicastPort
Defines the port the multicast socket will be using |
| protected int | packetTimeToLive
Number of hops in the life of the datapacket Default is 2, a hub and an interface card to prevent the data packets from leaving the localnetwork. |
| protected RemoteCommandManager | rcm
The remote command manager responsible for this service |
| protected boolean | stopListening
Indicates to the listening thread that it should stop |
| Access | Constructor and Description |
|---|---|
| public | |
| public | |
| public |
| Modifier and Type | Method and Description |
|---|---|
| public void | |
| public void | |
| public int | getAnnouncementDelay()
PUBLIC: Return the amount of time in millis that the service should wait between the time that this Remote Service is available and a session announcement is sent out to other discovery managers. |
| public MulticastSocket | |
| public String | |
| public int | |
| public int | getPacketTimeToLive()
PUBLIC: Returns the number of hops the data packets of the session announcement will take before expiring. |
| public boolean | isDiscoveryStopped()
ADVANCED: Return true if discovery has been stopped at the time this method is called. |
| public void | receivedAnnouncement(ServiceId serviceId)
INTERNAL: Process the announcement that indicates that a new service is online |
| public void | |
| public void | setAnnouncementDelay(int millisecondsToDelay)
PUBLIC: Set the amount of time in millis that the service should wait between the time that this Remote Service is available and a session announcement is sent out to other discovery managers. |
| public void | |
| public void | |
| public void | setPacketTimeToLive(int newPacketTimeToLive)
PUBLIC: Set the number of hops the data packets of the session announcement will take before expiring. |
| protected void | |
| public void | |
| public void | |
| public void | |
| public void |
| announcementDelay | back to summary |
|---|---|
| protected int announcementDelay Delay time in millis between initialization and when the announcement is sent | |
| communicationSocket | back to summary |
|---|---|
| protected MulticastSocket communicationSocket The multicast socket used for discovery | |
| DEFAULT_ANNOUNCEMENT_DELAY | back to summary |
|---|---|
| public static final int DEFAULT_ANNOUNCEMENT_DELAY | |
| DEFAULT_MULTICAST_GROUP | back to summary |
|---|---|
| public static final String DEFAULT_MULTICAST_GROUP Default value constants | |
| DEFAULT_MULTICAST_PORT | back to summary |
|---|---|
| public static final int DEFAULT_MULTICAST_PORT | |
| DEFAULT_PACKET_TIME_TO_LIVE | back to summary |
|---|---|
| public static final int DEFAULT_PACKET_TIME_TO_LIVE | |
| multicastGroupAddress | back to summary |
|---|---|
| protected String multicastGroupAddress Defines the IP address of the multicast group | |
| multicastPort | back to summary |
|---|---|
| protected int multicastPort Defines the port the multicast socket will be using | |
| packetTimeToLive | back to summary |
|---|---|
| protected int packetTimeToLive Number of hops in the life of the datapacket Default is 2, a hub and an interface card to prevent the data packets from leaving the localnetwork. | |
| rcm | back to summary |
|---|---|
| protected RemoteCommandManager rcm The remote command manager responsible for this service | |
| stopListening | back to summary |
|---|---|
| protected boolean stopListening Indicates to the listening thread that it should stop | |
| DiscoveryManager | back to summary |
|---|---|
| public DiscoveryManager(RemoteCommandManager mgr) Constructors to create a discovery manager. | |
| DiscoveryManager | back to summary |
|---|---|
| public DiscoveryManager(String address, int port, RemoteCommandManager mgr) | |
| DiscoveryManager | back to summary |
|---|---|
| public DiscoveryManager(String address, int port, int delay, RemoteCommandManager mgr) | |
| announceSession | back to summary |
|---|---|
| public void announceSession() INTERNAL: Send out an announcement that we are here. | |
| createCommunicationSocket | back to summary |
|---|---|
| public void createCommunicationSocket() INTERNAL: Create the multicast socket and join the multicast group. | |
| getAnnouncementDelay | back to summary |
|---|---|
| public int getAnnouncementDelay() PUBLIC: Return the amount of time in millis that the service should wait between the time that this Remote Service is available and a session announcement is sent out to other discovery managers. | |
| getCommunicationSocket | back to summary |
|---|---|
| public MulticastSocket getCommunicationSocket() INTERNAL: Return the socket that will be used for the multicast. | |
| getMulticastGroupAddress | back to summary |
|---|---|
| public String getMulticastGroupAddress() PUBLIC: Return the host address of the multicast group. | |
| getMulticastPort | back to summary |
|---|---|
| public int getMulticastPort() PUBLIC: Return the multicast port used for discovery. | |
| getPacketTimeToLive | back to summary |
|---|---|
| public int getPacketTimeToLive() PUBLIC: Returns the number of hops the data packets of the session announcement will take before expiring. The default is 2, a hub and an interface card to prevent the data packets from leaving the local network. | |
| isDiscoveryStopped | back to summary |
|---|---|
| public boolean isDiscoveryStopped() ADVANCED: Return true if discovery has been stopped at the time this method is called. If false is returned then it is undefined whether discovery is started or stopped. It may be started, or it may be in the process of starting or stopping. | |
| receivedAnnouncement | back to summary |
|---|---|
| public void receivedAnnouncement(ServiceId serviceId) INTERNAL: Process the announcement that indicates that a new service is online | |
| run | back to summary |
|---|---|
| public void run() Implements java. INTERNAL: This is the main execution method of discovery. It will create a socket to listen on, create a local connection for this service and announce that we are open for business.
| |
| setAnnouncementDelay | back to summary |
|---|---|
| public void setAnnouncementDelay(int millisecondsToDelay) PUBLIC: Set the amount of time in millis that the service should wait between the time that this Remote Service is available and a session announcement is sent out to other discovery managers. This may be needed to give some systems more time to post their connections into the naming service. Takes effect the next time listening is started. | |
| setMulticastGroupAddress | back to summary |
|---|---|
| public void setMulticastGroupAddress(String address) PUBLIC: Set the host address of the multicast group. Takes effect the next time listening is started. | |
| setMulticastPort | back to summary |
|---|---|
| public void setMulticastPort(int port) PUBLIC: Set the multicast port used for discovery. Takes effect the next time listening is started. | |
| setPacketTimeToLive | back to summary |
|---|---|
| public void setPacketTimeToLive(int newPacketTimeToLive) PUBLIC: Set the number of hops the data packets of the session announcement will take before expiring. The default is 2, a hub and an interface card to prevent the data packets from leaving the local network. Note that if sessions are hosted on different LANs that are part of WAN, the announcement sending by one session may not reach other sessions. In this case, consult your network administrator for the right time-to-live value or test your network by increase the value until sessions receive announcement sent by others. | |
| shallowCopy | back to summary |
|---|---|
| protected void shallowCopy(DiscoveryManager dmgr) INTERNAL: invoke when the RCM shutdown. Subclass overrides this method if necessary. | |
| startDiscovery | back to summary |
|---|---|
| public void startDiscovery() ADVANCED: Announce the local service and join the cluster | |
| startListening | back to summary |
|---|---|
| public void startListening() INTERNAL: This method puts us into the listening mode loop. This thread blocks, waiting on announcements that we receive from other discovery managers. | |
| stopDiscovery | back to summary |
|---|---|
| public void stopDiscovery() ADVANCED: Stop accepting announcements from other services becoming available. Note that this does not remove the local service from the cluster. | |
| stopListening | back to summary |
|---|---|
| public void stopListening() INTERNAL: Signal this instance to stop listening. | |