The JiniTM discovery utilities contain a set of discovery management interfaces, which define the policies to apply when implementing helper utilities that manage an entity's discovery duties: in particular, the management of multicast (group) discovery and unicast (locator) discovery. The discovery management interfaces are:
net.jini.discovery.DiscoveryManagement
net.jini.discovery.DiscoveryGroupManagement
net.jini.discovery.DiscoveryLocatorManagement
The discovery utilities also include a set of standard helper utility classes that implement one or more of the discovery management interfaces. The helper utility classes are:
net.jini.discovery.LookupDiscovery
net.jini.discovery.LookupLocatorDiscovery
net.jini.discovery.LookupDiscoveryManager
Notable features of the LookupDiscovery API are described below:
LookupDiscovery employs three protocols: unicast request,
multicast request, and multicast announcement protocols.
net.jini.core.discovery.LookupLocator class to start communications with a specific Jini lookup service.
Since the 1.1Beta2 release, there have been no notable changes to the interfaces or classes making up the Jini discovery utilities.
net.jini.discovery.debug- If set to any value, this property indicates that debugging information related to the execution of the Jini discovery protocols should be printed to
System.err. This property can be set on the JVM* of any entity that employs one or more of the following discovery utilities:
net.jini.discovery.LookupDiscoverynet.jini.discovery.LookupLocatorDiscoverynet.jini.discovery.LookupDiscoveryManager
net.jini.discovery.timeout- When a client or service uses the unicast request protocol to communicate with a particular lookup service, the socket connection used by the protocol will time out after N milliseconds, where N is defined by this property. The default value is 60,000 milliseconds (1 minute). This property can be set on the JVM of any entity that employs one or more of the following discovery utilities:
net.jini.discovery.LookupDiscoverynet.jini.discovery.LookupLocatorDiscoverynet.jini.discovery.LookupDiscoveryManager
net.jini.discovery.interface- When this property is set to either a host name or IP address, the network interface corresponding to the given name or address will be used in the multicast discovery process. When not set, the network interface used is typically the default interface as determined by the underlying operating system. This property can be set on the JVM of any entity that employs one or more of the following discovery utilities to participate in the multicast discovery protocol:
net.jini.discovery.LookupDiscoverynet.jini.discovery.LookupDiscoveryManagerNote that this property can also be set on the JVM in which the Reggie implementation of the lookup service runs. The value of this property controls the network interface the Reggie implementation uses when participating in the multicast discovery protocol as both an entity that is discovered by other entities (a lookup service), and as an entity that discovers other lookup services.
net.jini.discovery.announce- A Jini lookup service will send out multicast packets announcing its existence every N milliseconds. The value of this property can be used to control how often the Reggie implementation of the lookup service sends out multicast announcements and, for entities that discover lookup services, it can be used to control how often multicast announcements from previously discovered lookup services are examined for "liveness". Thus, this property can be set on the JVM in which the Reggie implementation of the lookup service runs, and it also can be set on the JVM of any entity that participates in the multicast discovery protocol through the use of one or more of the following discovery utilities:
net.jini.discovery.LookupDiscoverynet.jini.discovery.LookupDiscoveryManagerCurrently, the default value of this property is 120,000 milliseconds (two minutes).
net.jini.discovery.mtu- If set, this property must be an integer between 512 and the maximum MTU allowed by your system. The value of this property specifies the maximum permissible size of multicast request and announcement packets. The default value is 512. This property can be set on the JVM of any entity that employs one or more of the following discovery utilities to participate in the multicast discovery protocol, as well as the Reggie implementation of the lookup service:
net.jini.discovery.LookupDiscoverynet.jini.discovery.LookupDiscoveryManager
net.jini.discovery.ttl- If set, this property must be an integer between 1 and 255. This property specifies the time-to-live parameter used by both the multicast announcement and multicast request protocol implementations. The default value is 15. This property can be set on the JVM of any entity that employs one or more of the following discovery utilities to participate in the multicast discovery protocol, as well as the Reggie implementation of the lookup service:
net.jini.discovery.LookupDiscoverynet.jini.discovery.LookupDiscoveryManager
When attempting to use the discovery protocol in the SolarisTM operating environment, the following exception can occur if the system is not configured correctly:
java.net.SocketException: error setting options
There are two actions that can be taken to diagnose this problem. First, verify that your network interfaces are configured for multicast by typing the following at the command prompt:
ifconfig -a
If your interfaces are configured for multicast, then the output to the above command should contain the word MULTICAST for each interface. For example, output to this command from a correctly configured system would look something like:
lo0: flags=849<UP,LOOPBACK,RUNNING,MULTICAST> mtu 8232
inet 127.0.0.1 netmask ff000000
hme0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu 1500
inet 129.148.54.200 netmask ffffff00 broadcast 129.148.54.255
Where the line containing the "inet" and "broadcast" IP addresses
(inet 129.148.54.200 netmask ffffff00 broadcast
129.148.54.255) will contain addresses particular to your
system.
If your interfaces are not configured for multicast, have your system administrator reconfigure your system for multicast.
If your interfaces are configured for multicast, then the problem may be that multicast routing is not configured. To determine whether this is the problem, type the following at the command line:
netstat -nr
This command should produce output of the form:
Routing Table:
Destination Gateway Flags Ref Use Interface
-------------------- -------------------- ----- ----- ------ ---------
129.148.54.0 129.148.54.200 U 3 9740 hme0
224.0.0.0 129.148.54.200 U 3 0 hme0
default 129.148.54.157 UG 0 13646
127.0.0.1 127.0.0.1 UH 0 662071 lo0
If the output does not list the destination address as 224.0.0.0,
check to see if the default interface for multicast route configuration
has been set in the file /etc/rc2.d/S72inetsvc. On a machine installed with the Solaris 2.6 operating environment, you should see the line:
/usr/sbin/route add -interface -netmask "240.0.0.0" "224.0.0.0" "$mcastif"
This line typically appears near the bottom of the file. If it does not appear, or is commented out, the default interface for multicast is not set. Have your system administrator modify this file to set this interface for your system.