JXME to JXME
I know the code is probably the best documentation (even though the Programmer's Guide is not
all too bad), however, there are still higher level architecture concepts in the functionality of JXTA
that are not easy to figure out through the code. There have always been discussion on how to configure
the super peers or how they really work so I wanted to post this and hopefully get some validation and/or
corrections/feedback from the experts.
One can set up a super peer to be both a rendezvous and a relay. It can be configured to run servers to
listen to TCP or HTTP incoming connections on particular ports. Server peers can use the the public IP
address and port (for the particular transport they want to use) of the super peer as a seeding and
advertise their resources on it (pipes etc.). Client peers use the same public IP address and ports to
discover resources and get back advertisements of let's say server pipes with information on how to
connect to them.
My first question is, what does a server peer send to the super peer when it wants one of its server
pipes to be advertised? What kind of routing information is being sent? What I have seen in the case of
the server peer residing behind a NAT, both the local IP address (192.168.x.x) of the peer and the public
interface IP address of the local router are being sent. What goes on on the client peer side? Let's say again
in the case of the server peer residing behind the NAT, the client peer discovers the server peer pipe
advertisement from the rendezvous/relay and it attempts to create a connection to it. But the server peer
in this case is not reachable. Who has that information? And how does the relay kick in to help out both
with the connection and subsequent routing of messages between the two peers?
If anyone understands this part of the architecture well and can provide some guidance I will appreciate it.
It will help me tremendously as I am surveying the code to solve the jxme to jxme issue I have (when both
peers are behind NAT). Or at least point me to some high level documentation that can help me understand the
I will post this to the forum as well.