2.5.1 Dynamic Discovery
Peers use the JXTA Peer Discovery Protocol (PDP) to discover JXTA resources dynamically. The
PDP defines the lowest-level technique that is available for peers to discover resources. On an IP
network, it consists of two parts: a multicast message that is sent on the local network and the use
of rendezvous peers to discover peers beyond the scope of the local network. Other network
bindings will behave differently, but the essential operation of the PDP is that the requesting peer
sends a message, and resources that hear the request will respond directly to the peer. Therefore, a
peer using PDP will discover all JXTA resources that are on the local network or are known by the
peer’s rendezvous peers.
The implementation of discovery is actually a feature of the peergroup in which the peer is
running. Certain peergroups may define other protocols by which peers can discover resources
within the peergroup. The PDP is implemented by the discovery service that runs within the
NetPeerGroup (and most other peergroups).
The
peers -r
command of the JXTA Shell implements the PDP; it will discover all other
JXTA peers on the local network. Before executing this command, you may want to start a shell
on another machine on your network (if you must start a second shell on the same machine as the
first, skip ahead to Section 2.6 to see how to do this).
Now in the original shell window you can execute commands to discover the second peer:
JXTA>
peers
peer0: name = Test Shell 1
JXTA>peers -r
peer discovery message sent
JXTA>
peers
peer0: name = Test Shell 1
peer1: name = Test Shell 2
If you execute the same commands from the second shell, you’ll notice that it numbers the peers
differently. The peer numbers are used only internally by the shell application; peers are not
numbered in a JXTA sense (except for their unique IDs).
It can take some time for the shell to discover other peers; executing the
peers
-
r
command
may not necessarily report all of the peers on the network until the shell has completed its
discovery process. In addition, some peers may not respond because they miss the multicast
message; no reliable network protocol is used to discover peers. On the other hand, as more peers
are added to the network, discovery is faster: that’s because when a peer responds to a discovery
message, it sends information about itself and about all other peers that it has already discovered.
2.5.2 Static Discovery Through Rendezvous Peers
There are special JXTA peers known as rendezvous peers. These peers are like landmarks: they
keep a list of peers (and other JXTA resources) that they know about, and other peers query them
for that list.
If you’ve been following along with our example, and you’re on a computer connected to the
Internet, when you first executed the
peers
command, you received a list of peers. This is
because the shell is configured to contact certain known rendezvous peers on the Internet; by
default, it will automatically contact the hosts 209.25.154.235 and 209.25.154.237. These hosts
showed up in our earlier example as peers JXTA.ORG235 and JXTA.ORG237.
These hosts are the boostrapping set of rendezvous peers for the NetPeergroup. Peers may
discover rendezvous peers dynamically and use them in place of these; the intent of the
bootstrapping rendezvous peers is to initiate the discovery process of dynamic rendezvous peers.
When the shell contacts the peer at one of these hosts, it will get back a list of all other peers that
have discovered that same rendezvous peer. Therefore, a JXTA Shell running on a machine
connected to the Internet may automatically discover many peers.
You can use the
rdvstatus
command within the shell to see if the shell has successfully
contacted a rendezvous peer:
JXTA>
rdvstatus